![]() Instruction set extension with a 3-byte escape opcode
专利摘要:
Es werden ein Verfahren, eine Vorrichtung und ein System zur Decodierung einer Anweisung in einem Anweisungssatz variabler Länge offengelegt. Die Anweisung ist eine von einem Satz neuer Arten von Anweisungen, der einen neuen Escape-Code-Wert verwendet, dessen Länge zwei Byte beträgt, um anzuzeigen, daß ein drittes Opcode-Byte den anweisungsspezifischen Opcode für eine neue Anweisung enthält. Die neuen Anweisungen sind so definiert, daß die Länge jeder Anweisung in der Opcode-Map für einen der neuen Escape-Opcode-Werte durch Verwendung desselben Satzes von Eingaben bestimmt werden kann, wobei jede der Eingaben für die Bestimmung der Menge jeder Anweisung in der neuen Opcode-Map relevant ist. Bei mindestens einer Ausführungsform wird die Länge einer der neuen Anweisungen bestimmt, ohne den anweisungsspezifischen Opcode auszuwerten.A method, apparatus, and system for decoding an instruction in a variable-length instruction set are disclosed. The instruction is one of a set of new types of instructions that uses a new escape code value whose length is two bytes to indicate that a third opcode byte contains the instruction-specific opcode for a new instruction. The new instructions are defined so that the length of each instruction in the opcode map for one of the new escape opcode values can be determined using the same set of inputs, where each of the inputs is for determining the amount of each instruction in the new one Opcode Map is relevant. In at least one embodiment, the length of one of the new instructions is determined without evaluating the instruction-specific opcode. 公开号:DE102004030034A1 申请号:DE200410030034 申请日:2004-06-22 公开日:2005-01-27 发明作者:Frank Hillsboro Binns;James Shingle Springs Coke;David Folsom Jackson;Ves Folsom Naydenov;Dion Hillsboro Rodgers;Peter Folsom Ruscito;Masood Orangevale Tahir;Bret Hillsboro Toll 申请人:Intel Corp; IPC主号:G06F9-30
专利说明:
[0001] Dievorliegende Erfindung betrifft Mikroprozessorsysteme und insbesonderedie Anweisungssatzerweiterung durch Verwendung von 3-Byte-Escape-Opcodewertenin einem Opcode-Feld.TheThe present invention relates to microprocessor systems, and more particularlythe instruction set extension by using 3-byte escape opcode valuesin an opcode field. [0002] DieMikroprozessortechnologie hat sich über die Jahre hinweg mit großer Geschwindigkeitentwickelt. Fortschritt in der Computerarchitektur und der Halbleitertechnologiehaben viele Möglichkeitenzum Entwurf neuer Prozessoren geschaffen. Es gibt in der Regel zweiWahlmöglichkeitenfür denEntwurf neuer Prozessoren: (1) Definieren einer völlig neuenArchitektur und (2) Erweitern der derzeitigen Architektur, um neueMerkmale zu ermöglichen.Jede Wahlmöglichkeithat sowohl Vorteile als auch Nachteile. Wenn ein Prozessor jedochein signifikantes Marktsegment erfaßt hat, bietet die Möglichkeit(2) viele attraktive Vorteile. Der Hauptvorteil des Erweiterns derderzeitigen Architektur ist die Kompatibilität mit derzeitigen und früheren Modellen. Zuden Nachteilen gehörendie Probleme des Herauskommens aus den durch die früheren Entwürfe auferlegtenBeschränkungen.TheMicroprocessor technology has become very fast over the yearsdeveloped. Advancement in computer architecture and semiconductor technologyhave many possibilitiescreated for the design of new processors. There are usually twochoicesfor theDesigning new processors: (1) Defining a completely new oneArchitecture and (2) extend the current architecture to newTo enable features.Every choicehas both advantages and disadvantages. If a processor, howeverhas captured a significant market segment offers the opportunity(2) many attractive benefits. The main advantage of expanding thecurrent architecture is compatibility with current and earlier models. Tothe disadvantages belongthe problems of coming out of those imposed by the earlier draftsRestrictions. [0003] Beineuen Prozessoren treten sowohl in Bezug auf Hardware als auch inBezug auf Software neue Merkmale auf. Ein neuer Prozessor, der aufeinem existierenden Entwurf basiert, weist in der Regel einen zusätzlichenSatz von Anweisungen auf, der den neuen Hardwareentwurf ausnutzenkann. Das Erweitern eines Anweisungssatzes durch Hinzufügen einesneuen Satzes von Anweisungen ist jedoch aufgrund der Beschränkungenbei der Codierung der Anweisungen ein großes Problem. Deshalb wird inder Technologie ein effizientes Verfahren zum Erweitern eines Anweisungssatzesohne Vergrößern derHardwarekomplexitätbenötigt.atnew processors occur both in terms of hardware and inRelated to software new features. A new processor onis based on an existing design, usually has an additional designSet of instructions on which exploit the new hardware designcan. Extending an instruction set by adding aHowever, new set of instructions is due to limitationscoding the instructions is a big problem. That is why intechnology is an efficient way to extend an instruction setwithout enlarging thehardware complexityneeded. [0004] DieMerkmale und Vorteile der Erfindung werden aus der folgenden ausführlichenBeschreibung der Erfindung hervorgehen. Es zeigen:TheFeatures and advantages of the invention will become apparent from the following detailedDescription of the invention emerge. Show it: [0005] 1 ein Blockschaltbild mindestenseiner Ausführungsformeines Verarbeitungssystems, das offengelegte Techniken verwendenkann. 1 a block diagram of at least one embodiment of a processing system that can use disclosed techniques. [0006] 2 ein Blockschaltbild mindestenseiner Ausführungsformeines Formats füreine Anweisung. 2 a block diagram of at least one embodiment of a format for an instruction. [0007] 3 ein Blockschaltbild mindestenseiner Ausführungsformvon Logik zur Decodierung einer Anweisung. 3 a block diagram of at least one embodiment of logic for decoding an instruction. [0008] 4 ein Diagramm mindestenseiner Ausführungsformeiner Schaltung zur Decodierung einer neuen Anweisung des Typs 1. 4 a diagram of at least one embodiment of a circuit for decoding a new type 1 instruction. [0009] 5 ein Diagramm eines Präfix-und-Escape-Detektors,einer Decoderfreigabeschaltung und eines Opcode-Decoders gemäß mindestenseiner Ausführungsformder Erfindung. 5 a diagram of a prefix and escape detector, a decoder enable circuit and an opcode decoder according to at least one embodiment of the invention. [0010] 6 ein Flußdiagrammeines Prozesses zur Durchführungeiner Anweisungsdecodierung unter Verwendung von Präfixen gemäß mindestenseiner Ausführungsformder Erfindung. 6 a flowchart of a process for performing an instruction decoding using prefixes according to at least one embodiment of the invention. [0011] 7 ein Flußdiagrammmindestens einer Ausführungsformeines Verfahrens zum Decodieren der Länge einer Anweisung. 7 a flowchart of at least one embodiment of a method for decoding the length of an instruction. [0012] Eswerden Ausführungsformeneines Verfahrens, einer Vorrichtung und eines Systems zum Erweitern einesAnweisungssatzes unter Verwendung von Drei-Byte-Escape-Opcodes offengelegt.Offengelegte Ausführungsformenermöglichenferner eine Erweiterung eines Anweisungssatzes, der Drei-Byte-Escape-Opcodesverwendet, durch Verwendung eines Präfixes zum Spezifizieren einerAnweisung, die einen Drei-Byte-Escape-Opcode enthält. OffengelegteVerfahren verwenden einen Satz existierender Anweisungsfelder zurDefinition eines neuen Satzes von Anweisungen und liefern eineneffizienten Mechanismus zur Decodierung des neuen Anweisungssatzes.Embodiments of a method, apparatus and system for extending it will become apparent an instruction set using three-byte escape opcodes. Disclosed embodiments also allow an extension of an instruction set that uses three-byte escape opcodes by using a prefix to specify an instruction that contains a three-byte escape opcode. Disclosed methods use a set of existing instruction fields to define a new set of instructions and provide an efficient mechanism for decoding the new instruction set. [0013] DerAusdruck „Drei-Byte-Escape-Opcode" soll hier einenZwei-Byte-Wert bedeuten, der Decoderlogik angibt, daß der Opcodefür diefragliche Anweisung drei Byte enthält: die zwei Byte des Drei-Byte-Escape-Opcodes,plus einem anweisungsspezifischen Ein-Byte-Opcode. Bei mindestenseiner Ausführungsformist der Zwei-Byte-Wert in dem Drei-Byte-Escape-Opcode-Feld einer der folgenden Werte:0x0F38, 0x0F39, 0x0F3A oder 0x0F3B.Of the"Three-byte escape opcode" should be hereTwo-byte value means the decoder logic indicates that the opcodefor thethree-byte instruction in question contains: the two bytes of the three-byte escape opcode,plus an instruction-specific one-byte opcode. At leastan embodimentFor example, the two-byte value in the three-byte escape opcode field is one of the following values:0x0F38, 0x0F39, 0x0F3A or 0x0F3B. [0014] Inder folgenden Beschreibung werden zur Erläuterung zahlreiche spezifischeEinzelheiten, wie zum Beispiel Prozessortypen, Anweisungsformate,Logikgattertypen und Escape-Opcode-Wertedargelegt, um ein umfassendes Verständnis der vorliegenden Erfindungzu ermöglichen.Für Fachleuteist jedoch erkennbar, daß diesespezifischen Einzelheiten nicht erforderlich sind, um die vorliegendeErfindung auszuüben.In anderen Fällenwerden wohlbekannte elektrische Strukturen und Schaltungen in Blockschaltbildformgezeigt, um die vorliegende Erfindung nicht zu verdecken. In derfolgenden Beschreibung bedeutet die Notation 0x, daß die folgendeZahl im hexadezimalen Format vorliegt.InThe following description will be given numerous specific illustrative examplesDetails, such as processor types, instruction formats,Logic gate types and escape opcode valuesset out a comprehensive understanding of the present inventionto enable.For professionalsHowever, it can be seen that thisspecific details are not required to the presentExercise invention.In other casesbecome well-known electrical structures and circuits in block diagram formshown so as not to obscure the present invention. In theIn the following description, the notation 0x means that the followingNumber in hexadecimal format. [0015] 1 zeigt mindestens eineAusführungsformeines Verarbeitungssystems 100, das offengelegte Technikenverwenden kann. Mit dem System 100 können zum Beispiel neue Anweisungendes Typs 0 und neue Anweisungen des Typs 1 decodiert und ausgeführt werden.Für dieZwecke der vorliegenden Offenlegung enthält das Verarbeitungssystemein beliebiges System, das einen Prozessor 110 aufweist,wie zum Beispiel einen digitalen Signalprozessor (DSP), eine Mikrosteuerung,eine anwendungsspezifische integrierte Schaltung (ASIC) oder einenMikroprozessor. Der Prozessor 110 kann eine beliebige Artvon Architektur aufweisen, wie zum Beispiel Computer mit komplexemAnweisungssatz (CISC), Computer mit verringertem Anweisungssatz(RISC), Architekturen mit sehr langem Anweisungswort (VLIW), Mehrfachthread-oder hybride Architekturen. Das System 100 repräsentiertVerarbeitungssysteme, die auf Mikroprozessoren des Typs Itanium® undItanium® IIsowie auf Mikroprozessoren des Typs Pentium®, Pentium® Pro,Pentium® II,Pentium® III, Pentium® 4basieren, die alle von der Intel Corporation erhältlich sind. Es können auchandere Systeme (einschließlichPCs (personal computers) mit anderen Mikroprozessoren, technischeWorkstations, persönlichedigitale Assistenten und andere in der Hand gehaltene Einrichtungen,Beistellgeräteund dergleichen) verwendet werden. Bei einer Ausführungsformkann eine Version des von der Microsoft Corporation erhältlichenBetriebssystems WindowsTM ausgeführt werden,obwohl zum Beispiel auch andere Betriebssysteme und graphische Benutzeroberflächen verwendetwerden können. 1 shows at least one embodiment of a processing system 100 that can use disclosed techniques. With the system 100 For example, new type 0 instructions and new type 1 instructions may be decoded and executed. For purposes of the present disclosure, the processing system includes any system that includes a processor 110 such as a digital signal processor (DSP), a microcontroller, an application specific integrated circuit (ASIC) or a microprocessor. The processor 110 may include any type of architecture, such as complex instruction set computer (CISC), reduced instruction set (RISC), very long instruction word (VLIW), multi-threaded, or hybrid architectures. The system 100 represents processing systems based on Itanium® and Itanium® II microprocessors as well as Pentium® , Pentium® Pro, Pentium® II, Pentium® III, Pentium® 4 microprocessors, all available from Intel Corporation. Other systems (including personal computers with other microprocessors, technical workstations, personal digital assistants and other handheld devices, outliners and the like) may also be used. In one embodiment, a version of the Windows ™ operating system available from Microsoft Corporation may be executed, although, for example, other operating systems and graphical user interfaces may be used. [0016] 1 zeigt, daß der Prozessor 110 eineDecodereinheit 116, einen Satz Register 114, mindestens eineAusführungseinheit 112 undmindestens einen internen Bus 111 zum Ausführen vonAnweisungen enthält.Natürlichenthältder Prozessor 110 zusätzlicheSchaltkreise, die fürdas Verständnisder Erfindung nicht notwendig sind. Die Decodereinheit 116,die Register 114 und die Ausführungseinheit 112 sinddurch einen oder mehrere interne Busse 111 miteinandergekoppelt. Die Decodereinheit 116 dient zum Decodierenvon durch den Prozessor 110 empfangenen Anweisungen inSteuersignale und/oder Mikrocodeeintrittspunkte. Die Anweisungenkönnendurch einen Anweisungspuffer (wie z.B. 310 in 3) an die Decodereinheit 116 ausgegebenwerden. Als Reaktion auf diese Steuersignale und/oder Mikrocodeeintrittspunkteführt dieAusführungseinheit 112 dieentsprechenden Operationen durch. Die Decodereinheit 116 kannmit einer beliebigen Anzahl verschiedener Mechanismen implementiertwerden (z.B. eine Nachschlagetabelle, eine Hardwareimplementierung,ein programmierbares logisches Array („PLA") usw.). 1 shows that the processor 110 a decoder unit 116 , a set of registers 114 , at least one execution unit 112 and at least one internal bus 111 to execute statements. Of course, the processor contains 110 additional circuits that are not necessary for the understanding of the invention. The decoder unit 116 , the registers 114 and the execution unit 112 are by one or more internal buses 111 coupled together. The decoder unit 116 is for decoding by the processor 110 received instructions in control signals and / or microcode entry points. The instructions may be passed through an instruction buffer (such as 310 in 3 ) to the decoder unit 116 be issued. In response to these control signals and / or microcode entry points, the execution unit performs 112 the appropriate operations. The decoder unit 116 can be implemented with any number of different mechanisms (eg, a look-up table, a hardware implementation, a programmable logical array ("PLA"), etc.). [0017] DieDecodereinheit 116 ist mit der Fähigkeit gezeigt, Anweisungen 106 zudecodieren, die durch einen erweiterten Anweisungssatz 118 definiertenFormaten folgen. Der Anweisungssatz 118 enthält einenexistierenden Anweisungssatz 118a und einen neuen Anweisungssatz 118b.Der Anweisungssatz 118 enthält Anweisungen zur Durchführung vonOperationen an skalaren und gepackten Daten. Das Zahlenformat für diese Operationenkann ein beliebiges zweckmäßiges Formatsein, wie zum Beispiel Zahlen mit einfacher Präzision, doppelter Präzision underweiterte Floating-Point-Zahlen, vorzeichenbehaftete und vorzeichenloseganze Zahlen und nichtnumerische Daten. Bei mindestens einer Ausführungsformkann die Längeder in dem Anweisungssatz 118 definierten Anweisungen jeweilsunterschiedlich sein.The decoder unit 116 is shown with the ability to instructions 106 to be decoded by an extended instruction set 118 follow defined formats. The instruction set 118 contains an existing instruction set 118a and a new instruction set 118b , The instruction set 118 contains instructions for performing operations on scalar and packed data. The number format for these operations may be any convenient format, such as single precision, double precision, and extended floating point numbers, signed and unsigned integers, and non-numeric data. In at least one embodiment, the length may be in the instruction set 118 defined instructions may be different. [0018] Anweisungen 106,die den durch den Anweisungssatz 118 dargelegten Formatenfolgen, könnenin einem Speichersystem 102 gespeichert werden. Das Speichersystem 102 istals verallgemeinerte Repräsentationvon Speicher oder Speicherhierarchien gedacht und kann vielfältige Speicherformenumfassen, wie zum Beispiel Festplatte, CD-ROM, Direktzugriffsspeicher(RAM), dynamischer Direktzugriffsspeicher (DRAM), statischer Direktzugriffsspeicher(SRAM), Flash-Speicher und damit zusammenhängende Schaltkreise. Das Speichersystem 102 kannzusätzlichzu den Anweisungen 106 Daten 104 speichern, diedurch Datensignale repräsentiertwerden, die der Prozessor 110 ausführen kann.instructions 106 by the instruction set 118 Following formats can follow a storage system 102 get saved. The storage system 102 is intended as a generalized representation of memory or memory hierarchies and may include a variety of forms of memory such as hard disk, CD-ROM, Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Flash Memory, and related circuitry. The storage system 102 can in addition to the instructions 106 dates 104 which are represented by data signals that the processor 110 can perform. [0019] 2 ist ein Diagramm einesFormats einer Anweisung 200 gemäß einer Ausführungsformder Erfindung. Das Anweisungsformat 200 enthält ein Präfixfeld 210,ein Opcode-Feld 220 und Operandenkennungsfelder (z.B. modR/M,Skala-Index-Basis, Verschiebung, unmittelbar, usw.). Die Operandenkennungsfeldersind optional und enthalten ein modR/M-Feld 230, ein SIB-Feld 240,ein Verschiebungsfeld 250 und ein Unmittelbar-Feld 260. 2 is a diagram of a format of an instruction 200 according to an embodiment of the invention. The instruction format 200 contains a prefix field 210 , an opcode field 220 and operand ID fields (eg modR / M, scale index base, displacement, immediate, etc.). The operand ID fields are optional and contain a modR / M field 230 , a SIB field 240 , a displacement field 250 and an immediate field 260 , [0020] DerInhalt des modR/M-Felds 230 gibt eine Adressierungsforman. Das modR/M-Feld kann Register und Adressierungsarten spezifizieren.The contents of the modR / M field 230 indicates an addressing form. The modR / M field can specify registers and addressing types. [0021] BestimmteCodierungen von Informationen in den modR/M-Feld 230 können angeben,daß einzweites Byte Adressierungsinformationen in dem SIB-Feld (Skala/Index/Basis) 240 vorliegt,um die Adressierungsform des Anweisungscodes voll zu spezifizieren.Zum Beispiel könneneine Basis-Plus-Index-Adressierungsform und eine Skala-Plus-Index-Adressierungsformjeweils in dem SIB-Feld 240 Informationen enthalten, wie zumBeispiel Skalenfaktor, Registernummer für den Index und/oder Registernummerdes Basisregisters.Certain encodings of information in the modR / M field 230 can specify that a second byte of addressing information in the SIB field (scale / index / base) 240 is present to fully specify the addressing form of the instruction code. For example, a base plus index addressing form and a scale plus index addressing form may each be in the SIB field 240 Information such as scale factor, register number for the index and / or register number of the base register. [0022] Für Fachleuteist erkennbar, daß dasin 2 dargelegte Format 200 beispielhaftist und daß andere Organisationenvon Daten in einem Anweisungscode mit offengelegten Ausführungsformenverwendet werden können.Zum Beispiel müssendie Felder 210, 220, 230, 240, 250, 260 nichtin der gezeigten Reihenfolge organisiert werden, sondern können inandere Stellen in Bezug aufeinander umorganisiert werden und müssen nichtfortlaufend sein. Außerdemsollten die hier besprochenen Feldlängen nicht als Einschränkung aufgefaßt werden.Ein Feld, das als eine bestimmte Anzahl von Byte betragend besprochenwird, kann bei alternativen Ausführungsformenals ein größeres oderein kleineres Feld implementiert werden. Außerdem kann der Ausdruck „Byte", obwohl er hiereine Acht-Bit-Gruppierung bedeutet, in anderen Ausführungsformenals eine Gruppierung einer beliebigen anderen Größe, zum Beispiel 4 Bit, 16Bit und 32 Bit, implementiert werden.It will be apparent to those skilled in the art that the in 2 presented format 200 is exemplary and that other organizations of data can be used in an instruction code with disclosed embodiments. For example, the fields must 210 . 220 . 230 . 240 . 250 . 260 can not be organized in the order shown, but can be reorganized into other places in relation to each other and need not be continuous. In addition, the field lengths discussed here should not be construed as limiting. A field that is discussed as a certain number of bytes may be implemented as a larger or smaller field in alternative embodiments. In addition, the term "byte," although here means an eight-bit grouping, may be implemented in other embodiments as a grouping of any other size, for example, 4-bit, 16-bit, and 32-bit. [0023] Inder vorliegenden Bedeutung umfaßteine Anweisung (wie zum Beispiel eine der in 1 dargestellten Anweisungen 106)bestimmte Werte in den Feldern des in 2 gezeigtenAnweisungsformats 200. Eine solche Anweisung wird manchmal „eine tatsächlicheAnweisung" bezeichnet.Die Bitwerte füreine tatsächliche Anweisungwerden hier manchmal kollektiv als ein „Anweisungscode" bezeichnet.As used herein, an instruction (such as one of in 1 instructions shown 106 ) certain values in the fields of in 2 instruction format shown 200 , Such an instruction is sometimes referred to as "an actual instruction." The bit values for an actual instruction are sometimes collectively referred to herein as a "instruction code." [0024] Dieakzeptablen Byte-Werte füreine tatsächlicheAnweisung werden in dem Anweisungssatz 118 (1) spezifiziert. AkzeptableByte-Werte fürjedes der Felder des Anweisungsformats 200 sind die Werte, dieDecoderlogik, wie zum Beispiel der Anweisungslängendecoder 306 (3) und die Decodereinheit 116 (1) erkennen und verarbeiten,um decodierten Anweisungscode zu erzeugen. Für jeden Anweisungscode repräsentiertder entsprechende decodierte Anweisungscode eindeutig eine durchdie Ausführungseinheit 112 (1) als Reaktion auf denAnweisungscode durchzuführendeReaktion. Der decodierte Anweisungscode kann eine oder mehrere Mikrooperationenenthalten.The acceptable byte values for an actual statement are in the instruction set 118 ( 1 ). Acceptable byte values for each of the fields of the instruction format 200 are the values, the decoder logic, such as the instruction length decoder 306 ( 3 ) and the decoder unit 116 ( 1 ) and process to produce decoded instruction code. For each instruction code, the corresponding decoded instruction code uniquely represents one by the execution unit 112 ( 1 ) response to be taken in response to the instruction code. The decoded instruction code may include one or more micro-operations. [0025] Dasin 2 dargestellte Präfixfeld 210 kanneine Anzahl von Präfixenenthalten. Bei einer Ausführungsformenthältdas Präfixfeld 210 biszu vier Präfixe,wobei jedes Präfixein Byte beträgt.Das Präfixfeld 210 istoptional. Fürden hier besprochenen erweiterten neuen Anweisungssatz dient dasPräfixfeldzum Erweitern des Drei-Byte-Escape-Opcode-Anweisungsraums.This in 2 illustrated prefix field 210 can contain a number of prefixes. In one embodiment, the prefix field contains 210 up to four prefixes, each prefix being one byte. The prefix field 210 is optional. For the extended new instruction set discussed here, the prefix field is for expanding the three-byte escape opcode instruction space. [0026] DerInhalt des Opcode-Felds 220 spezifiziert die Operation.Bei mindestens einer Ausführungsform weist,wie oben erwähnt,das Opcode-Feld fürden neuen Anweisungssatz 118b, der hier besprochen wird, eineLänge vondrei Byte auf. Bei mindestens einer Ausführungsform kann das Opcode-Feld 220 für den erweitertenneuen Anweisungssatz 118 somit ein, zwei oder drei ByteInformationen enthalten. Fürbestimmte der neuen Anweisungen in dem hier besprochenen erweitertenneuen Anweisungssatz (Anweisungen des Typs 0) wird der Drei-Byte-Escape-Opcode-Wertin dem Zwei-Byte-Feld 118c des Opcode-Felds 220 mitdem Inhalt eines dritten Bytes 225 des Opcode-Felds 220 kombiniert,um eine Operation zu spezifizieren. Dieses dritte Byte 225 wirdhier als ein anweisungsspezifischer Opcode bezeichnet. Für andereder neuen Anweisungen in dem hier besprochenen erweiterten neuenAnweisungssatz (Anweisungen des Typs 1), wird der Drei-Byte-Escape-Opcode-Wertin dem Zwei-Byte-Feld 118c des Opcode-Felds 220 mitdem Inhalt des Präfix-Felds 210 unddem Inhalt des anweisungsspezifischen Opcode-Felds 225 desOpcode-Felds 220 kombiniert, um eine Operation zu spezifizieren.The content of the opcode field 220 specifies the operation. In at least one embodiment, as noted above, the opcode field for the new instruction set 118b , which is discussed here, a length of three bytes. In at least one embodiment, the opcode field 220 for the extended new instruction set 118 thus containing one, two or three bytes of information. For certain of the new instructions in the extended new instruction set discussed here (type 0 instructions), the three-byte escape opcode value will be in the two-byte field 118c of the opcode field 220 with the contents of a third byte 225 of the opcode field 220 combined to specify an operation. This third byte 225 is referred to herein as an instruction-specific opcode. For others, the new instructions In the extended new instruction set discussed here (Type 1 instructions), the three-byte escape opcode value is in the two-byte field 118c of the opcode field 220 with the contents of the prefix field 210 and the content of the instruction-specific opcode field 225 of the opcode field 220 combined to specify an operation. [0027] Imallgemeinen erzeugt die Kombination des Präfix-Felds 210 unddes Opcode-Felds 220 eine Anzahl verschiedener Arten vonAnweisungen. Zur Veranschaulichung zeigt 2 nur sieben Arten von Anweisungen: einereguläreEin-Byte-Anweisung 212, eine reguläre Anweisung mit Präfix alsQualifizierer 214, eine reguläre Escape-Anweisung 216,einen ersten erweiterten Anweisungstyp 222, einen zweitenerweiterten Anweisungstyp 224, einen ersten neuen Anweisungstyp 226 undeinen zweiten neuen Anweisungstyp 228. Wie Fachleuten bekanntist, könnenandere Arten von Anweisungen ähnlichdefiniert werden.In general, the combination of the prefix field generates 210 and the opcode field 220 a number of different types of instructions. To illustrate shows 2 only seven types of statements: a regular one-byte statement 212 , a regular statement prefixed as a qualifier 214 , a regular escape statement 216 , a first extended statement type 222 , a second extended statement type 224 , a first new statement type 226 and a second new statement type 228 , As is known to those skilled in the art, other types of instructions may be similarly defined. [0028] DiereguläreEin-Byte-Anweisung 212 enthält reguläre Anweisungen mit anweisungsspezifischen Ein-Byte-Opcodesin dem Opcode-Feld 220. Die reguläre Anweisung mit Präfix alsQualifizierer 214 enthält reguläre Anweisungen,die das Präfixals Qualifizierer fürden Opcode verwenden. Zum Beispiel kann eine String-Anweisung einenREPEAT-Präfixwertzum Wiederholen der String-Anweisung um eine in dem Zählregisterspezifizierte Anzahl von Malen oder bis eine bestimmte Bedingungerfülltist, verwenden. Der in der Anweisung 214 verwendete Präfixwertfügt demOpcode-Wert, der in dem Opcode-Feld 220 folgt, keine völlig neueBedeutung hinzu. Statt dessen dient der Präfixwert lediglich als Qualifiziererzum Qualifizieren des Opcodes mit zusätzlichen Bedingungen. Wie später erläutert werdenwird, ist diese Verwendung des Präfixes in der Anweisung 214 deutlichvon der in dem zweiten erweiterten Anweisungstyps 224 unddem zweiten neuen Anweisungstyp 228 verschieden.The regular one-byte statement 212 contains regular instructions with instruction-specific one-byte opcodes in the opcode field 220 , The regular statement with prefix as qualifier 214 contains regular statements that use the prefix as a qualifier for the opcode. For example, a string statement may use a REPEAT prefix value to repeat the string statement by a number of times specified in the count register or until a certain condition is met. The one in the instruction 214 The prefix value used adds the opcode value that is in the opcode field 220 follows, does not add a completely new meaning. Instead, the prefix value merely serves as a qualifier for qualifying the opcode with additional conditions. As will be explained later, this use of the prefix in the statement 214 significantly different from the second extended statement type 224 and the second new instruction type 228 different. [0029] DiereguläreEscape-Anweisung 216 ist eine reguläre Anweisung, die einen Escape-Opcodein einem ersten Feld 215 des Opcode-Felds 220 verwendet,um Decoderhardware anzugeben, das ein anweisungsspezifischer Opcodein einem zweiten Feld 217 des Opcode-Felds 220 zurDefinition der Anweisung verwendet wird. Zum Beispiel gibt bei einerAusführungsformein Floating-Point-Koprozessor-Escape-Opcode-Wert 0xD8 bis 0xDFin dem ersten Byte 215 des Opcode-Felds 220 an,daß derOpcode-Wert, der in dem zweiten Byte 217 des Opcode-Felds 220 folgt,als eine Koprozessoranweisung interpretiert und zur Ausführung andie Koprozessorhardware gerichtet werden sollte.The regular escape statement 216 is a regular statement that gives an escape opcode in a first field 215 of the opcode field 220 used to specify decoder hardware that has an instruction-specific opcode in a second field 217 of the opcode field 220 used to define the statement. For example, in one embodiment, a floating point coprocessor escape opcode value is 0xD8 through 0xDF in the first byte 215 of the opcode field 220 indicates that the opcode value is in the second byte 217 of the opcode field 220 follows as a coprocessor instruction should be interpreted and directed to the coprocessor hardware for execution. [0030] Dererste erweiterte Anweisungstyp 222 ist eine bestimmte Artvon Escape-Anweisung, die so definiert ist, daß sie einen vordefiniertenEscape-Opcode-Wert 0x0F in einem ersten Feld 221 des Opcode-Felds 220 enthält. DerEscape-Opcode 0x0F gibt Decoderhardware an, das ein anweisungsspezifischerOpcode-Wert in einem zweiten Feld 223 des Opcode-Felds 220 zurDefinition der Anweisung verwendet wird. Anweisungen des erstenerweiterten Anweisungstyps 222 können abhängig von dem Wert des zweitenOpcode-Bytes (und in bestimmten Fällen dem Wert von drei Bitdes modR/M-Felds 230) variierende Längen aufweisen. Zum Beispielkönnenzwei Anweisungen (Packed Shift Left Logical) des erweiterten Anweisungstyps 222 jeweilsdie folgenden Anweisungsfeldwerte enthalten: PSLLW (Schiebewertim Register): 0F: F1: 1b"11xxxyyy", wobeixxx ein erstes Register und yyy ein zweites Register definiert. PSLLW(Schieben unmd.-Wert): 0F:71:1b"11110xxx": unmd.-Daten (8Bit), wobei xxx ein Register definiert.The first extended statement type 222 is a specific type of escape statement that is defined to have a predefined escape opcode value 0x0F in a first field 221 of the opcode field 220 contains. The escape opcode 0x0F indicates decoder hardware that has an instruction-specific opcode value in a second field 223 of the opcode field 220 used to define the statement. Statements of the first extended statement type 222 may depend on the value of the second opcode byte (and in some cases the value of three bits of the modR / M field 230 ) have varying lengths. For example, two statements (Packed Shift Left Logical) of the extended statement type 222 each contain the following statement field values: PSLLW (shift value in the register): 0F: F1: 1b "1 1xxxyyy", where xxx defines a first register and yyy a second register. PSLLW (shift unmd. Value): 0F: 71: 1b "11110xxx": unmd data (8 bits), where xxx defines a register. [0031] Injeder der dargelegten PSSLW-Anweisungen enthält das erste Wort des Opcode-Felds 220 denEscape-Wert 0x0F. Die erste Anweisung ist drei Byte lang, aber diezweite Anweisung beträgtvier Byte, weil sie ein Byte unmittelbarer Daten enthält. Für den erweitertenAnweisungstyp 222 verwendet folglich Decoderhardware (wiezum Beispiel der Anweisungslängendecoder 306 in 3) den Escape-Opcode-Wert0x0F in dem ersten Feld 221 des Opcode-Felds 220,sowie den Wert in dem zweiten Byte 223 des Zwei-Byte-Opcode-Felds 220 unddem Wert des modR/M-Felds 230 zur Decodierung der Länge derAnweisung.In each of the PSSLW instructions set out, the first word of the opcode field contains 220 the escape value 0x0F. The first statement is three bytes long, but the second statement is four bytes because it contains one byte of immediate data. For the extended statement type 222 thus uses decoder hardware (such as the instruction length decoder 306 in 3 ) the escape opcode value 0x0F in the first field 221 of the opcode field 220 , as well as the value in the second byte 223 of the two-byte opcode field 220 and the value of the modR / M field 230 for decoding the length of the instruction. [0032] Dererste neue Anweisungstyp 226 (der auch als „neue Anweisungdes Typs 0" bezeichnet wird)ist ein neuer Anweisungstyp, der Teil des neuen Anweisungssatzes 118b (1) ist, der zu dem existierenden regulären Anweisungssatz 118a (1) hinzugefügt werdensoll. Das Anweisungsformat des neuen Anweisungssatzes 118b enthält ein 3-Byte-Escape-Opcode-Feld 118c undein anweisungsspezifisches Opcode-Feld 225. Das 3-Byte-Escape-Opcodes-Feld 118c weistbei mindestens einer Ausführungsformeine Längevon zwei Byte auf. Die neue Anweisung des Typs 0 verwendet einenvon vier speziellen Escape-Opcodes, die als Drei-Byte-Escape-Opcodesbezeichnet werden. Die Drei-Byte-Escape-Opcodes sind zwei Byte langund geben Decoderhardware an, daß die Anweisung ein drittesByte in dem Opcode-Feld 220 zur Definition der Anweisungverwendet. Das 3-Byte-Escape-Opcode-Felds 118c kann aneiner beliebigen Stelle in dem Anweisungs-Opcode liegen und muß nichtunbedingt das Feld höchsterOrdnung oder niedrigster Ordnung in der Anweisung sein.The first new statement type 226 (also called "new type 0 statement") is a new type of statement that is part of the new statement set 118b ( 1 ) which is the existing regular instruction set 118a ( 1 ) should be added. The instruction format of the new instruction set 118b contains a 3-byte escape opcode field 118c and an instruction specific opcode field 225 , The 3-byte escape opcode field 118c has a length of two bytes in at least one embodiment. The new type 0 instruction uses one of four special escape opcodes, called three-byte escape opcodes. The three-byte escape opcodes are two bytes long and indicate to decoder hardware that the instruction is a third byte in the opcode field 220 used to define the statement. The 3-byte escape opcode field 118c can be anywhere in the instruction opcode and does not necessarily have the highest order or lowest order field in to be the instruction. [0033] Beimindestens einer Ausführungsformwerden die vier neuen Drei-Byte-Escape-Opcode-Werte als 0x0F3y definiert, wobei y0x8, 0x9, 0xA oder 0xB ist. Fürdie Anweisung 226 sollte der Wert in dem anweisungsspezifischenOpcode-Feld 225 des Opcode-Felds 220 als eineneue Anweisung decodiert werden.In at least one embodiment, the four new three-byte escape opcode values are defined as 0x0F3y, where y is 0x8, 0x9, 0xA, or 0xB. For the instruction 226 should be the value in the instruction-specific opcode field 225 of the opcode field 220 be decoded as a new statement. [0034] Sowohlder zweite erweitern Anweisungstyp 224 als auch der zweiteneue Anweisungstyp 228 (hier manchmal als „neue Anweisungdes Typs 1" bezeichnet)verwenden den Wert in dem Präfix-Feld 210 alsTeil des Opcode. Im Gegensatz zu der regulären Anweisung mit Präfixqualifizierer 214,bei der das Präfixlediglich den folgenden Opcode qualifiziert, verwenden der zweiteerweiterte Anweisungstyp 224 und die neue Anweisung desTyps 1 228 beide das Präfixzur Definition einer völligneuen Anweisung.Both the second expand statement type 224 as well as the second new instruction type 228 (sometimes referred to herein as a "new type 1 statement") use the value in the prefix field 210 as part of the opcode. Unlike the regular statement with prefix qualifier 214 where the prefix qualifies only the following opcode, use the second extended statement type 224 and the new type 1 statement 228 both the prefix to define a completely new statement. [0035] Anweisungspräfixe wurdenursprünglichentwickelt, um einen Satz Anweisungen zu erweitern. Zum Beispielwird das Repeat-Präfixwiederholt, um eine String-Anweisung zu wiederholen. Die Repeat-Präfixcodeslauten 0xF3 (REP, REPE) und 0xF2 (REPNE). Das an sich verwendetePräfixdefiniert keine neue Bedeutung fürden folgenden Opcode. Es definiert lediglich zusätzliche Operationsbedingungenfür denOpcode.Instruction prefixes wereoriginallydesigned to extend a set of instructions. For examplebecomes the repeat prefixrepeated to repeat a string statement. The repeat prefix codesare 0xF3 (REP, REPE) and 0xF2 (REPNE). The used in itselfprefixdoes not define a new meaning forthe following opcode. It merely defines additional operating conditionsfor theOpcode. [0036] Escape-Opcodesliefern eine Erweiterung des Anweisungssatzes. Zum Beispiel wirdmit den Escape-Opcodes 0xD8 bis 0xDF angegeben, daß das zweiteOpcode-Byte 217 einen Wert enthält, der eine Anweisung für die Floating-Point-Einheitdefiniert. Der Decoder leitet diesen Opcode zu dem Floating-Point-Decoder weiter.Escape opcodes provide an extension of the instruction set. For example, the escape opcodes 0xD8 through 0xDF indicate that the second opcode byte 217 contains a value that defines an instruction for the floating point unit. The decoder forwards this opcode to the floating point decoder. [0037] Beimindestens einer Ausführungsformdes hier besprochenen erweiterten Anweisungssatzes ist der 3-Byte-Escape-Opcodeeine Zwei-Byte-Entitätmit einem Wert von 0x0F3y, wobei y 0x8, 0x9, 0xA oder 0xB ist. Das3-Byte-Escape-Opcode-Feld 118c gibt dem Decoder an, daß der anweisungsspezifischeOpcode-Wert in dem dritten Byte 225 des Opcode-Felds 200 eineAnweisung in dem neuen Anweisungssatz angibt.In at least one embodiment of the extended instruction set discussed herein, the 3-byte escape opcode is a two-byte entity having a value of 0x0F3y, where y is 0x8, 0x9, 0xA, or 0xB. The 3-byte escape opcode field 118c indicates to the decoder that the instruction-specific opcode value in the third byte 225 of the opcode field 200 specifies an instruction in the new instruction set. [0038] ImGegensatz zu dem oben in Verbindung mit dem ersten erweiterten Anweisungstyp 222 besprochenen2-Byte-Escape-Opcode-Feld, gibt der Wert in dem 3-Byte-Escape-Opcode-Feld 118c demDecoder das Verfahren an, das zur Bestimmung der Länge derdefinierten Anweisung des Typs 0 verwendet werden soll. Das heißt, jederWert fürden 3-Byte-Escape-Opcodeist mit einem bestimmten Verfahren assoziiert, das zur Bestimmungder Anweisungslängefür jedeAnweisung in der dem bestimmten 3-Byte-Escape-Code entsprechendenMap verwendet werden soll. Zum Beispiel ist der Wert 0x0F38 in dem3-Byte-Escape-Opcode-Feld 118c einerassoziierten Opcode-Map zugeordnet. Die Länge für jede Anweisung in der 0x0F38-Opcode-Map kannberechnet werden, indem dasselbe Längenbestimmungsverfahren verwendetwird, mit dem die Länge deranderen Anweisungen in der 0x0F38-Opcode-Map bestimmt wird.In contrast to the above in connection with the first extended statement type 222 discussed 2-byte escape opcode field, returns the value in the 3-byte escape opcode field 118c to the decoder, the procedure to be used to determine the length of the defined type 0 instruction. That is, each value for the 3-byte escape opcode is associated with a particular method that is to be used to determine the instruction length for each instruction in the map corresponding to the particular 3-byte escape code. For example, the value 0x0F38 is in the 3-byte escape opcode field 118c associated with an associated opcode map. The length for each instruction in the 0x0F38 opcode map can be calculated using the same length determination method that determines the length of the other instructions in the 0x0F38 opcode map. [0039] Ähnlich kanndie Längejeder Anweisung der jeweiligen mit den übrigen 3-Byte-Escape-Opcode-Werten (0x0F39,0x0F3A, 0x0F3B) assoziierten Opcode-Maps mit derselben Längenbestimmungslogikberechnet werden, mit der die Längeder anderen Anweisungen in der jeweiligen Opcode-Map bestimmt wird.Similarlythe lengtheach instruction of each with the remaining 3-byte escape opcode values (0x0F39,0x0F3A, 0x0F3B) associated opcode maps with the same length determination logicbe calculated with the the lengththe other instructions in the respective opcode map. [0040] DieLängenbestimmungslogik,mit der die Längevon Anweisungen fürjede Anweisung in einer der neuen Opcode-Maps bestimmt wird, istinsofern vereinfacht, als derselbe Satz Eingangsterme ausgewertet wird,um die Längejeder Anweisung in der Opcode-Map zu bestimmen. Eine solche Längenbestimmungslogik wirdhier als Logik oder Verfahren des Typs „feste Eingabe" bezeichnet. Dasheißt,jeder Eingangsterm, der ausgewertet wird, um die Länge einerAnweisung in der Abbildung zu bestimmen, ist auch für die Bestimmung derLänge jederanderen Anweisung in der Abbildung relevant. Der feste Satz auszuwertenderTerme kann von Opcode-Map zu Opcode-Map verschieden sein. Obwohlder Satz auszuwertender Eingangsterme unter Opcode-Maps verschiedensein kann, sind die zur Bestimmung der Anweisungslänge ausgewertetenEingangsterme überalle Anweisungen in einer gegebenen 3-Byte-Opcode-Abbildung hinwegdieselben.TheLength determination logic,with the lengthof instructions forEach statement in one of the new opcode maps is determinedsimplified in that the same set of input terms is evaluated,around the lengtheach statement in the opcode map. Such a length determination logic becomesherein referred to as "fixed input" logic or methodis called,each input term evaluated to the length of aDetermining instruction in the figure is also for the determination ofLength everyoneother instruction in the picture relevant. The fixed sentence to be evaluatedTerme can be different from Opcode Map to Opcode Map. Even thoughthe set of input terms to be evaluated differs under opcode mapsmay be the ones evaluated to determine the instruction lengthEntrance terms aboutall statements in a given 3-byte opcode mapthe same. [0041] DieKombination eines Präfixund eines Escape-Opcodes liefert eine signifikante Vergrößerung der Opcode-Tabelleeines Prozessors, um zusätzlicheneue Anweisungssätzezu ermöglichen.Diese Kombination verwendet die existierenden Präfix-Codes zur Definition einesneuen Satzes von Anweisungen zusätzlichzu dem durch die Escape-Opcodes erzeugten Anweisungssatz. DurchVerwendung der existierenden Präfix-Codeskönnendie Decodierungsschaltkreise fürden existierenden Anweisungssatz relativ unmodifiziert bleiben, umdie Decodierung der neuen Anweisungen 118c (1) zu unterstützen.The combination of a prefix and an escape opcode provides a significant increase in the opcode table of a processor to allow for additional new instruction sets. This combination uses the existing prefix codes to define a new set of instructions in addition to the instruction set generated by the escape opcodes. By using the existing prefix codes, the existing instruction set decoding circuitry may remain relatively unmodified to decode the new instructions 118c ( 1 ) to support. [0042] Dieanweisungsspezifischen Opcode-Werte (in dem dritten Byte 225 desOpcode-Felds 220) eines Teils oder aller der neuen Anweisungenkönnendieselben wie die Opcodes fürexistierende Anweisungen sein. Durch Verwendung derselben Opcodesmit dem Präfixund Escape-Opcodes zur Definition eines neuen Anweisungssatzes können dieDecodierungsschaltkreise weniger komplex sein, als wenn man einenvölligneuen Satz Opcodes fürden neuen Anweisungssatz hat.The instruction-specific opcode values (in the third byte 225 of the opcode field 220 ) of part or all of the new instructions may be the same as the existing instruction opcodes. By using the same opcodes with the prefix and escape opcodes to define a new instruction set, the decoding circuits may be less complex than having a whole new set of opcodes for the new instruction set. [0043] Beieiner Ausführungsformdient der Präfixwert0x66 zur Definition neuer Anweisungen. Ähnlich können andere Präfixe verwendetwerden. AußerdemkönnenPräfixeimmer noch in der traditionellen Rolle des Erweiterns des Opcodesoder des Qualifizierens des Opcodes unter bestimmten Betriebsbedingungenverwendet werden.atan embodimentserves the prefix value0x66 for defining new instructions. Similarly, other prefixes can be usedbecome. Furthermorecanprefixesstill in the traditional role of expanding the opcodeor qualifying the opcode under certain operating conditionsbe used. [0044] Dienachfolgende Tabelle 1 zeigt Beispiele für den neuen Anweisungssatzunter Verwendung von Präfixenund Drei-Byte-Escape-Opcodes.TheTable 1 below shows examples of the new instruction setusing prefixesand three-byte escape opcodes. [0045] Inden obigen Beispielen betreffen die Anweisungen mit den Präfixen 0x66Anweisungen, die ein oder mehrere Register erweiteter Größe (wiezum Beispiel Registergröße von 128Bit) verwenden, währenddie Anweisungen ohne das Präfix0x66 Anweisungen betreffen, die ein oder mehrere Register kleinererGröße (wie zumBeispiel Registergröße von 64Bit) verwenden. Die kleineren Register werden hier als Register „regulärer Länge" bezeichnet. Fachleutenist bekannt, daß dieexakten Codes fürPräfixeimplementierungsabhängigsind und daß deroben besprochene Präfixwertvon 0x66 lediglich zur Veranschaulichung dient.InIn the examples above, the instructions are prefixed with 0x66Statements that contain one or more extended-size registers (such asfor example register size of 128Bit) whilethe instructions without the prefix0x66 statements that contain one or more smaller registersSize (such asExample register size of 64Bit). The smaller registers are referred to herein as "regular length" registersis known that theexact codes forprefixesimplementation dependentare and that theabove discussed prefix valuefrom 0x66 for illustrative purposes only. [0046] 3 ist ein Diagramm der Logik 300 zumDecodieren von Anweisungen variabler Länge. Die Decoderlogik 300 kanneinen Anweisungslängendecoder 306,einen Anweisungsrotator 308, einen Anweisungspuffer 310,einen Präfix-und Escape-Detektor 320, eine Decoderfreigabeschaltung 330 undeinen Opcode-Decoder 340 enthalten. Der Präfix- undEscape-Detektor 320, die Decoderfreigabeschaltung 330 undder Opcode-Decoder 340 bilden die gesamte in 1 dargestellte Decodereinheit 116 odereinen Teil dieser. Obwohl er als eine einzige Entität dargestelltist, kann der Präfix-und Escape-Code-Detektor als separate Escape-Detektor- und Präfix-Detektor-Blöcke implementiertwerden. 3 is a diagram of logic 300 for decoding variable length instructions. The decoder logic 300 can be a statement length decoder 306 , an instruction rotator 308 , an instruction buffer 310 , a prefix and escape detector 320 , a decoder enable circuit 330 and an opcode decoder 340 contain. The prefix and escape detector 320 , the decoder enable circuit 330 and the opcode decoder 340 form the entire in 1 illustrated decoder unit 116 or part of this. Although depicted as a single entity, the prefix and escape code detector can be implemented as separate escape detector and prefix detector blocks. [0047] DerAnweisungslängendecoder 306 bestimmtdie Längeeines tatsächlichenAnweisungscodes, der von dem externen Speicher (wie zum Beispieldem in 2 gezeigten Speicher 102)abgehoben wurde. Zur Veranschaulichung wird angenommen, daß ein Anweisungscodebis zu fünfByte enthält:das erste Byte entspricht IN bis IN+7, das zweite Byte entspricht IK bis IK+7, das dritteByte entspricht IL bis IL+7,das vierte Byte entspricht IM bis IM+7 und das fünfte Byte entspricht IP bis IP+7, wobeiIN bis IN+7, IK bis IK+7, IM bis IM+7, IL bis IL+7 und IP bis IP+7 die Bitpositionendes Anweisungscodes bedeuten. In der Praxis kann eine tatsächlicheAnweisung jedoch mehr als fünfByte in ihrem Anweisungscode enthalten. Ähnlich kann eine tatsächlicheAnweisung weniger als 5 Byte in ihrem Anweisungscode enthalten.Bei mindestens einer Ausführungsformsind die 5 dargestellten Bytes des Anweisungscodes fortlaufend,d.h. K = N + 8, L = K + 8 und L = N + 16, und M = L + 8, M = K +16 und M = K + 24 usw. Wie oben in Verbindung mit 2 besprochen, müssen die Felder des in 2 dargestellten Formats 200 jedochnicht die gezeigten Positionen einnehmen. Folglich können diebeispielhaften fünfBytes eines Anweisungscodes, die hier besprochen werden, in einerbeliebigen Reihenfolge vorliegen und müssen nicht fortlaufend sein.The statement length decoder 306 determines the length of an actual instruction code to be used by the external memory (such as the one in 2 shown memory 102 ) was lifted. By way of illustration, it is assumed that an instruction code contains up to five bytes: the first byte corresponds to I N to I N + 7 , the second byte corresponds to I K to I K + 7 , the third byte corresponds to I L to I L + 7 , the fourth byte corresponds to I M to I M + 7 and the fifth byte corresponds to I P to I P + 7 , where I N to I N + 7 , I K to I K + 7 , I M to I M + 7 , I L to I L + 7 and I P to I P + 7 denote the bit positions of the instruction code. In practice, however, an actual instruction may contain more than five bytes in its instruction code. Similarly, an actual instruction may contain less than 5 bytes in its instruction code. In at least one embodiment, the 5 bytes of the instruction code shown are continuous, ie K = N + 8, L = K + 8 and L = N + 16, and M = L + 8, M = K + 16 and M = K + 24 etc. As above in connection with 2 discussed, the fields of in 2 illustrated format 200 but do not take the positions shown. Thus, the exemplary five bytes of instruction code discussed herein may be in any order and need not be continuous. [0048] Für Fachleuteist erkennbar, daß Logikdes Anweisungslängendecoders 306 ineinem System, das Anweisungen variabler Länge unterstützt, relativ komplexe Längendecodierverfahrenimplementieren kann. Dies gilt insbesondere für Systeme, die verschiedeneVerfahren erfordern und verschiedene Eingangsterme auswerten, umdie Anweisungslängefür Anweisungenin derselben Opcode-Map zu bestimmen. Wie oben besprochen, ergebenAusführungsformender vorliegenden Erfindung eine vereinfachte Längendecodierverarbeitung durchGewährleistung,daß dieLänge jederAnweisung in einer Opcode-Map durch eine einzige Festeingabe-Längenbestimmungslogikbestimmt wird.It will be appreciated by those skilled in the art that the instruction length decoder logic 306 in a system that supports variable length instructions, can implement relatively complex length decoding techniques. This is especially true for systems that require different methods and evaluate different input terms to determine the instruction length for instructions in the same opcode map. As discussed above, embodiments of the present invention provide simplified length decoding processing by ensuring that the length of each instruction in an opcode map is determined by a single hard-entry length determination logic. [0049] DerRotator 308 rotiert die unverarbeiteten Anweisungsbytesdergestalt, daß daserste zu decodierende Byte an einer Anfangsposition steht. Der Rotator 308 identifiziertalso den Anfang der zu decodierenden Anweisungsbyte. Es sollte beachtetwerden, daß,obwohl der Rotator 308 das erste Byte einer Anweisung,wie zum Beispiel ein Präfix-Byteidentifizieren kann, das erste Byte nicht identifiziert werden muß. Zum Beispiel identifiziertbei mindestens einer Ausführungsformder Rotator 308 das niedrigstwertige Byte des Opcodes und rotiertes in die Anfangsposition der Anweisung. Bei mindestens einer weiterenAusführungsformidentifiziert der Rotator 308 das höchstwertige Byte des Opcodesund rotiert es in die Anfangsposition der Anweisung.The rotator 308 rotates the raw instruction bytes such that the first byte to be decoded is at an initial position. The rotator 308 thus identifies the beginning of the instruction byte to be decoded. It should be noted that although the rotator 308 For example, to identify the first byte of an instruction, such as a prefix byte, the first byte need not be identified. For example, in at least one embodiment, the rotator identifies 308 the least significant byte of the opcode and rotates it to the starting position of the instruction. In at least one other embodiment, the rotator identifies 308 the most significant byte of the opcode and rotates it to the starting position of the instruction. [0050] DerAnweisungspuffer 310 empfängt und speichert die Anweisungen,die aus dem externen Speicher abgerufen wurden. Bei mindestens einerAusführungsformwerden die Anweisungen längendecodiertund rotiert, bevor sie in dem Anweisungspuffer 310 empfangenwerden. Bei mindestens einer Ausführungsform wird der Anweisungspuffer 310 alsein Anweisungs-Cacheimplementiert.The statement buffer 310 receives and stores the instructions retrieved from the external memory. In at least one embodiment, the instructions are long decoded and rotated before being stored in the instruction buffer 310 be received. In at least one embodiment, the instruction buffer becomes 310 implemented as an instruction cache. [0051] DerPräfix-und Escape-Detektor 320 empfängt die Anweisungsbit IN bis IN+7, IK bis IK+7, IL bis IL+7 und detektiertdas Vorhandensein eines oder mehrerer eines Satzes vordefinierterPräfixeund/oder Escape-Opcodes, die als Teil des neuen Anweisungssatzesverwendet werden. Der Wert des Präfixes kann so gewählt werden,daß esdasselbe wie ein fürden regulärenAnweisungssatz verwendetes Präfixist. Die Decoderfreigabeschaltung 330 verwendet die Ergebnissedes Präfix-und Escape-Detektors 320, um Freigabe- oder Auswahlsignalefür deneinzelnen Opcode-Decoder zu erzeugen. Der Opcode-Decoder 440 empfängt dieAnweisungsbit IN bis IN+7,IK bis IK+7, IM bis IM+7, IL bis IL+7 und IP bis IP+7 und übersetztdie einzelnen Anweisungscodes in decodierte Anweisungscodes, diedie gewünschteAnweisung spezifizieren.The prefix and escape detector 320 receives the instruction bits I N through I N + 7 , I K through I K + 7 , I L through I L + 7, and detects the presence of one or more of a set of predefined prefixes and / or escape opcodes that form part of the new instruction set be used. The value of the prefix can be chosen to be the same as a prefix used for the regular statement set. The decoder enable circuit 330 uses the results of the prefix and escape detectors 320 to generate enable or select signals for the single opcode decoder. The opcode decoder 440 receives the instruction bits I N to I N + 7 , I K to I K + 7 , I M to I M + 7 , I L to I L + 7 and I P to I P + 7, and translates the individual instruction codes into decoded instruction codes that specify the desired instruction. [0052] 4 ist ein Blockschaltbildmindestens einer Ausführungsformeiner Decoderschaltung 440 zum Decodieren einer neuen Anweisungdes Typs 0. Die Decoderschaltung 440 kann als Teil einesPräfix-und Escape-Detektors, wie zum Beispiel des in 3 dargestellten Präfix- und Escape-Detektors 320 implementiert werden.Zur Veranschaulichung bei der Besprechung von 4 wird angenommen, daß der Rotator (308, 3) das erste Byte des Anweisungs-Opcodesangezeigt hat. 4 is a block diagram of at least one embodiment of a decoder circuit 440 for decoding a new type 0 instruction. The decoder circuit 440 can be used as part of a prefix and escape detector, such as the one in 3 represented prefix and escape detector 320 be implemented. For illustration in the discussion of 4 it is assumed that the rotator ( 308 . 3 ) has indicated the first byte of the instruction opcode. [0053] 4 zeigt, daß der Decoder 440 einAND-Gatter 450 enthält,das bestimmt, ob das erste Byte der Anweisung (die AnweisungsbitIN bis IN+7) mitdem 2-Byte-Escape-Opcode-Wert 0x0F übereinstimmen. Das Signal ESC2wird gesetzt, wenn die Anweisungsbit IN bisIN+7 den 2-Byte-Escape-Opcode 0x0F repräsentieren. 4 shows that the decoder 440 an AND gate 450 which determines whether the first byte of the instruction (the instruction bits I N through I N + 7 ) match the 2-byte escape opcode value 0x0F. The signal ESC2 is set when the instruction bits I N through I N + 7 represent the 2-byte escape opcode 0x0F. [0054] DerDecoder 440 enthältaußerdemAND-Gatter 402, 404, 406, 408.Das AND-Gatter 402 vergleicht die Anweisungsbit IK bis IK+7 mit dem3-Byte-Escape-Opcode-Wert 0x38 und erzeugt ein Signal ES38. DasSignal ES38 wird gesetzt, wenn die Anweisungsbit IK bisIK+7 den 3-Byte-Escape-Opcode 0x38 repräsentieren.The decoder 440 also includes AND gates 402 . 404 . 406 . 408 , The AND gate 402 The instruction bits I K to I K + 7 are compared with the 3-byte escape opcode value 0x38 and generate a signal ES38. The signal ES38 is set when the instruction bits I K through I K + 7 represent the 3-byte escape opcode 0x38. [0055] Wenndie Anweisungsbit IN bis IN+7 den2-Byte-Escape-Opcode 0x0F repräsentierenund die Anweisungsbit IK bis IK+7 den3-Byte-Escape-Opcode 0x38 repräsentieren,ist die Anweisung eine neue Typ-0-Anweisung 226. Wenn sowohlESC2 als auch ES38 gesetzt sind, wertet das AND-Gatter 403 aufTrue aus, wodurch die Logik 412 freigegeben wird. Die Logik 412 wählt, umden Wert in dem anweisungsspezifischen Opcode-Feld 225 (2) zu decodieren, die 3-Byte-Opcode-Mapfür Anweisungenmit dem 3-Byte-Escape-Codewert 0x38.If the instruction bits I N through I N + 7 represent the 2-byte escape opcode 0x0F and the instruction bits I K through I K + 7 represent the 3-byte escape opcode 0x38, the instruction is a new type 0 instructions 226 , If both ESC2 and ES38 are set, the AND gate evaluates 403 to true, which eliminates the logic 412 is released. The logic 412 selects the value in the instruction-specific opcode field 225 ( 2 ) to decode the 3-byte opcode map for instructions with the 3-byte escape code value 0x38. [0056] DasAND-Gatter 404 vergleicht die Anweisungsbit IK bisIK+7 mit dem 3-Byte-Escape-Opcode-Wert 0x39und erzeugt ein Signal ES39. Das Signal ES39 wird gesetzt, wenndie Anweisungsbit IK bis IK+7 den 3-Byte-Escape-Opcode0x39 repräsentieren.Wenn die Anweisungsbit IN bis IN+7 den2-Byte-Escape-Opcode 0x0F repräsentierenund die Anweisungsbit IK bis IK+7 den3-Byte-Escape-Opcode 0x39 repräsentieren,ist die Anweisung eine neue Typ-0-Anweisung 226. Wenn sowohlESC2 als auch ES39 gesetzt sind, wertet das AND-Gatter 405 zuTrue aus, wodurch die Logik 414 freigegeben wird. Die Logik 414 wählt, umden Wert in dem anweisungsspezifischen Opcode-Feld 225 (2) zu decodieren, die 3-Byte-Opcode-Mapfür Anweisungenmit dem 3-Byte-Escape-Opcode-Wert 0x39.The AND gate 404 The instruction bits I K to I K + 7 are compared with the 3-byte escape opcode value 0x39 and generate a signal ES39. The signal ES39 is set when the instruction bits I K through I K + 7 represent the 3-byte escape opcode 0x39. If the instruction bits I N through I N + 7 represent the 2-byte escape opcode 0x0F and the instruction bits I K through I K + 7 represent the 3-byte escape opcode 0x39, the instruction is a new type 0 instructions 226 , If both ESC2 and ES39 are set, the AND gate evaluates 405 to true, which eliminates the logic 414 is released. The logic 414 selects the value in the instruction-specific opcode field 225 ( 2 ) to decode the 3-byte opcode map for instructions with the 3-byte escape opcode value 0x39. [0057] DasAND-Gatter 406 vergleicht die Anweisungsbit IK bisIK+7 mit dem 3-Byte-Escape-Opcode-Wert 0x3Aund erzeugt ein Signal ES3A. Das Signal ES3A wird gesetzt, wenndie Anweisungsbit IK bis IK+7 den 3-Byte-Escape-Opcode0x3A repräsentieren.Wenn die Anweisungsbit IN bis IN+7 den2-Byte-Escape-Opcode 0x0F repräsentierenund die Anweisungsbit IK bis IK+7 den3-Byte-Escape-Opcode 0x3A repräsentieren,ist die Anweisung eine neue Typ-0-Anweisung 226. Wenn sowohlESC2 als auch ES3A gesetzt sind, wertet das AND-Gatter 405 zuTrue aus, wodurch die Logik 416 freigegeben wird. Die Logik 416 wählt, umden Wert in dem anweisungsspezifischen Opcode-Feld 225 (2) zu decodieren die 3-Byte-Opcode-Map für Anweisungenmit dem 3-Byte-Escape-Opcode-Wert 0x3A.The AND gate 406 The instruction bits I K to I K + 7 are compared with the 3-byte escape opcode value 0x3A and generate a signal ES3A. The signal ES3A is set when the instruction bits I K through I K + 7 represent the 3-byte escape opcode 0x3A. If the instruction bits I N through I N + 7 represent the 2-byte escape opcode 0x0F and the instruction bits I K through I K + 7 represent the 3-byte escape opcode 0x3A, the instruction is a new type 0 instructions 226 , If both ESC2 and ES3A are set, the AND gate evaluates 405 to true, which eliminates the logic 416 is released. The logic 416 selects the value in the instruction-specific opcode field 225 ( 2 ) to decode the 3-byte opcode map for instructions with the 3-byte escape opcode value 0x3A. [0058] DasAND-Gatter 408 vergleicht die Anweisungsbit IK bisIK+7 mit dem 3-Byte-Escape-Opcode-Wert 0x3Bund erzeugt ein Signal ES3B. Das Signal ES3B wird gesetzt, wenndie Anweisungsbit IK bis IK+7 den 3-Byte-Escape-Opcode0x3B repräsentieren.Wenn die Anweisungsbit IN bis IN+7 den2-Byte-Escape-Opcode 0x0F repräsentierenund die Anweisungsbit IK bis IK+7 den3-Byte-Escape-Opcode 0x3B repräsentieren,ist die Anweisung eine neue Typ-0-Anweisung 226. Wenn sowohlESC2 als auch ES3B gesetzt sind, wertet das AND-Gatter 409 zuTrue aus, wodurch die Logik 418 freigegeben wird. Die Logik 418 wählt, umden Wert in dem anweisungsspezifischen Opcode-Feld 225 (2) zu decodieren die 3-Byte-Opcode-Map für Anweisungenmit dem 3-Byte-Escape-Opcode-Wert 0x3B.The AND gate 408 The instruction bits I K to I K + 7 are compared with the 3-byte escape opcode value 0x3B and generate a signal ES3B. The signal ES3B is set when the instruction bits I K to I K + 7 represent the 3-byte escape opcode 0x3B. If the instruction bits I N through I N + 7 represent the 2-byte escape opcode 0x0F and the instruction bits I K through I K + 7 represent the 3-byte escape opcode 0x3B, the instruction is a new type 0 instructions 226 , If both ESC2 and ES3B are set, the AND gate evaluates 409 to true, which eliminates the logic 418 is released. The logic 418 selects the value in the instruction-specific opcode field 225 ( 2 ) to decode the 3-byte opcode map for instructions with the 3-byte escape opcode value 0x3B. [0059] 5 ist ein Diagramm weitererEinzelheiten eines Decoders, wie zum Beispiel des in 3 dargestellten Opcode-Decoders 340,sowie zusätzlicheEinzelheiten des Präfix-und Escape-Detektors 320 undder Decoderfreigabeschaltung 330. 5 FIG. 13 is a diagram of further details of a decoder, such as the one in FIG 3 illustrated opcode decoders 340 , as well as additional details of the prefix and escape detector 320 and the decoder enable circuit 330 , [0060] ZurVeranschaulichung wird angenommen, daß es für einen beispielhaften Anweisungssatzein 0x66-Präfixund drei Escape-Opcodes gibt: die regulären Escape-Opcodes 0xD8-0xDFden Zwei-Byte-Escape-Opcode 0x0F und die Drei-Byte-Escape-Opcodes0x0F38-0x0F3B.toIllustratively, it is assumed that for an exemplary instruction seta 0x66 prefixand three escape opcodes are: the regular escape opcodes 0xD8-0xDFthe two-byte escape opcode 0x0F and the three-byte escape opcodes0x0F38-0x0F3B. [0061] Außerdem wirdzur Veranschaulichung angenommen, daß der Rotator 308 (3) das erste Byte des Anweisungscodes,das das Präfixsein kann, angezeigt hat. Es versteht sich jedoch, daß in derPraxis eine Anweisung auf andere Bit rotiert werden kann, wie zumBeispiel das niedrigstwertige Byte des Opcode, und daß die in 5 dargestellte Funktionalität entsprechendmodifiziert werden kann.In addition, it is assumed for illustrative purposes that the rotator 308 ( 3 ) has indicated the first byte of the instruction code, which may be the prefix. It should be understood, however, that in practice, an instruction may be rotated to other bits, such as the least significant byte of the opcode, and that the in 5 shown functionality can be modified accordingly. [0062] 5 zeigt, daß nebenden in 3 angegebenenzusätzlichenByte der Anweisung zu einem bestimmten einzelnen Decoder 530, 532, 534, 536, 538, 440, 542 geroutetwerden können.Zum Beispiel zeigt 5,daß dieAnweisungswörterIM bis IM+7 undIP bis IP+7 für den neuenAnweisungstyp 1 zu dem Decoder 452 geroutet werdenkönnen.Bestimmte Merkmale der in 5 dargestelltenSchaltung wurden absichtlich weggelassen, um die Figur zu vereinfachenund um eine Verdeckung von Merkmalen der gewählten Ausführungsformen zu vermeiden.Für Fachleuteist jedoch erkennbar, daß andereByte der Anweisungswörterneben den in 5 dargestelltenzu den anderen Decodern 530, 532, 534, 536, 538, 440 geroutetwerden können. 5 shows that in addition to the in 3 specified additional bytes of instruction to a particular individual decoder 530 . 532 . 534 . 536 . 538 . 440 . 542 can be routed. For example, shows 5 in that the instruction words I M to I M + 7 and I P to I P + 7 for the new instruction type 1 to the decoder 452 can be routed. Certain features of in 5 have been intentionally omitted to simplify the figure and to avoid obscuring features of the selected embodiments. However, it will be appreciated by those skilled in the art that other bytes of instruction words besides those in 5 presented to the other decoders 530 . 532 . 534 . 536 . 538 . 440 can be routed. [0063] DerPräfix-und Escape-Detektor 320 enthält 5 AND-Gatter 510, 512, 514, 516, 518 und 520.Die AND-Gatter 510, 512 und 514 vergleichenim allgemeinen die Anweisungsbit IN bisIN+7 mit dem entsprechenden Präfix-Codeund Escape-Opcode.The prefix and escape detector 320 contains 5 AND gates 510 . 512 . 514 . 516 . 518 and 520 , The AND gates 510 . 512 and 514 generally compare the instruction bits I N through I N + 7 with the corresponding prefix code and escape opcode. [0064] DasAND-Gatter 510 vergleicht die Anweisungsbit IN bisIN+7 mit dem Präfix-Code 0x66 und erzeugt ein SignalPRFX. Das Signal PRFX wird gesetzt, wenn die Anweisungsbit IN bis IN+7 das Präfix 0x66repräsentieren.The AND gate 510 Compares the instruction bits I N to I N + 7 with the prefix code 0x66 and generates a signal PRFX. The signal PRFX is set when the instruction bits I N to I N + 7 represent the prefix 0x66. [0065] DasAND-Gatter 512 vergleicht die Anweisungsbit IN bisIN+7 mit den Escape-Opcodes 0xD8-0xDF und erzeugtein Signal ESC 1. Das Signal ESC 1 wird gesetzt,wenn die Anweisungsbit IN bis IN+7 beliebigeder Escape-Opcodes 0xD8 bis 0xDF repräsentieren.The AND gate 512 The instruction bit I N to I N + 7 compares with the escape opcodes 0xD8-0xDF and generates a signal ESC 1 , The signal ESC 1 is set when the instruction bits I N to I N + 7 represent any of the escape opcodes 0xD8 to 0xDF. [0066] DasAND-Gatter 514 vergleicht die Anweisungsbit IN bisIN+7 mit dem 2-Byte-Escape-Opcode 0x0F und erzeugtein Signal ESC2A. Das Signal ESC2A wird gesetzt, wenn die AnweisungsbitIN bis IN+7 den2-Byte-Escape-Opcode 0x0F repräsentieren.Wenn die Anweisungsbit IN bis IN+7 den2-Byte-Escape-Opcode 0x0F repräsentieren,kann die Anweisung entweder eine erweitere Typ-0-Anweisung 222 odereine neue Typ-0-Anweisung 228 sein. Wie im nachfolgendenbeschrieben, wertet ein zusätzlichesAND-Gatter 518 deshalb einen dritten Satz Bit IL bis IL+7 aus, umzu bestimmen, ob die zweite Hälftedes Drei-Byte-Opcodesvorhanden ist.The AND gate 514 The instruction bit I N to I N + 7 compares to the 2-byte escape opcode 0x0F and generates a signal ESC2A. The signal ESC2A is set when the instruction bits I N through I N + 7 represent the 2-byte escape opcode 0x0F. When the instruction bits I N through I N + 7 represent the 2-byte escape opcode 0x0F, the instruction may either be an extended type 0 instruction 222 or a new type 0 statement 228 be. As described below, an additional AND gate evaluates 518 Therefore, a third set of bits I L through I L + 7 is used to determine if the second half of the three-byte opcode is present. [0067] Aufdie obige Weise bestimmt der Präfix-und Escape-Detektor 320, ob ein erster Satz Bit IN bis IN+7 einesAnweisungs-Opcodes den Präfixwert0x66 oder einen der Escape-Opcode-Werte enthält. Wenn der erste Satz Bitden Präfixwertenthält,kann die Anweisung entweder eine erweiterte Typ-1-Anweisung 224 oder eineneue Typ-1-Anweisung 228 sein. Also wird ein zweiter SatzBit IK bis IK+7 ausgewertet,um zu bestimmen, ob er den Wert 0x0F enthält. (Wenn nicht, wird angenommen,daß dasPräfixnicht Teil des Opcodes einer Anweisung, sondern ein traditionellesPräfixist).In the above manner, the prefix and escape detector determines 320 whether a first set of bits I N through I N + 7 of an instruction opcode contains the prefix value 0x66 or one of the escape opcode values. If the ers If the set of bits contains the prefix value, the instruction can either have an extended type 1 instruction 224 or a new type 1 statement 228 be. So a second set of bits I K to I K + 7 is evaluated to determine if it contains the value 0x0F. (If not, it is assumed that the prefix is not part of the instruction opcode but a traditional prefix). [0068] Folglichvergleicht das AND-Gatter 516 die Anweisungsbit IK bis IK+7 mit dem2-Byte-Escape-Opcode 0x0Fund erzeugt ein Signal ESC2B. Das Signal ESC2B wird gesetzt, wenndie Anweisungsbit IK bis IK+7 den 2-Byte-Escape-Opcode0x0F repräsentieren.Consequently, the AND gate compares 516 the instruction bits I K to I K + 7 with the 2-byte escape opcode 0x0F and generates a signal ESC2B. The signal ESC2B is set when the instruction bits I K to I K + 7 represent the 2-byte escape opcode 0x0F. [0069] Zusätzlich wertetdas AND-Gatter 518 die Anweisungsbit IK bisIK+7 aus, um zu bestimmen, ob die zweiteHälfteeines 3-Byte-Opcodes in dem Bit vorhanden ist. Eine solche Auswertungist nützlich,falls der erste Satz Bit IN bis IN+7 den Wert 0x0F enthält. Das AND-Gatter 518 vergleichtdie Anweisungsbit IK bis IK+7 mitder zweiten Hälfteder 3-Byte-Escape-Opcodes und erzeugt ein Signal ESC3A. Das SignalESC3A wird gesetzt, wenn die Anweisungsbit IK bisIK+7 den Wert 0x38, 0x39, 0x3A oder 0x3Benthalten.In addition, the AND gate evaluates 518 instruction bits I K through I K + 7 to determine if the second half of a 3-byte opcode is present in the bit. Such an evaluation is useful if the first set of bits I N to I N + 7 contains the value 0x0F. The AND gate 518 Compares the instruction bits I K to I K + 7 with the second half of the 3-byte escape opcodes and generates a signal ESC3A. The signal ESC3A is set when the instruction bits I K to I K + 7 contain the value 0x38, 0x39, 0x3A or 0x3B. [0070] Aufdie obige Weise bestimmt die Präfix-und Escape-Detektorschaltung 320, ob ein zweiter Satz Bit IK bis IK+7 einesAnweisungs-Opcode einen der Escape-Opcode-Werte enthält. Wennder zweite Satz Bit IK bis IK+7 diezweite Hälfteeines Drei-Byte-Opcode-Werts enthält, kann die Anweisung einenneue Typ-0-Anweisung 226 sein. Wenn der zweite Satz BitIK bis IK+7 jedochden Wert 0x0F enthält,kann die Anweisung entweder eine erweiterte Typ-1-Anweisung 224 odereine neue Typ-1-Anweisung 228 sein. Folglich wird ein dritterSatz Bit IL bis IL+7 ausgewertet,um zu bestimmen, ob er die zweite Hälfte eines der Drei-Byte-Escape-Opcodes enthält. Dasheißt,der dritte Satz Bit IL bis IL+7 wirdausgewertet, um zu bestimmen, ob er die Werte 0x38, 0x39, 0x3A oder0x3B enthält.In the above manner, the prefix and escape detection circuit determines 320 whether a second set of bits I K through I K + 7 of an instruction opcode contains one of the escape opcode values. If the second set of bits I K through I K + 7 contains the second half of a three-byte opcode value, the instruction may issue a new type 0 instruction 226 be. However, if the second set of bits I K through I K + 7 contains the value 0x0F, the instruction may either be an extended type 1 instruction 224 or a new type 1 statement 228 be. Thus, a third set of bits I L through I L + 7 is evaluated to determine if it contains the second half of one of the three-byte escape opcodes. That is, the third set of bits I L through I L + 7 is evaluated to determine if it contains the values 0x38, 0x39, 0x3A, or 0x3B. [0071] Folglichzeigt 5, daß das AND-Gatter 519 dieAnweisungsbit LK bis LK+7 mitdem zweiten Byte des 3-Byte-Escape-Opcodes 0x38-0x3B vergleichtund ein Signal ESC3B erzeugt. Das Signal ESC3B wird gesetzt, wenndie Anweisungsbit IL bis IL+7 daszweite Byte eines beliebigen der Drei-Byte-Escape-Opcodes 0x0F38bis 0x0F3B repräsentieren.Consequently shows 5 that the AND gate 519 the instruction bits L K to L K + 7 are compared with the second byte of the 3-byte escape opcode 0x38-0x3B and generates a signal ESC3B. The signal ESC3B is set when the instruction bits I L through I L + 7 represent the second byte of any of the three-byte escape opcodes 0x0F38 through 0x0F3B. [0072] WieFachleuten bekannt ist, könnenandere Logikgatter verwendet werden, um das Vergleichen oder Decodierender Anweisungsbit IN bis IN+7,IK bis IK+7, IL bis IL+7 durchzuführen.As known to those skilled in the art, other logic gates may be used to perform the comparison or decoding of the instruction bits I N through I N + 7 , I K through I K + 7 , I L through I L + 7 . [0073] DieDecoderfreigabeschaltung 330 empfängt die Signale PRFX; ESC1,ESC2A, ESC2B, ESC3A und ESC3B, um die Freigabesignale für die einzelnenDecoder zu erzeugen. Die Decoderfreigabeschaltung 330 enthält ein NOR-Gatter 520 undAND-Gatter 522, 526, 527, 528 und 529.Für Fachleuteist erkennbar, daß alle einzelnenDecoder oder ein Teil davon zusammen in einer einzigen Einrichtung,wie zum Beispiel einem programmierbaren Logikarray, implementiertwerden können.The decoder enable circuit 330 receives the signals PRFX; ESC1, ESC2A, ESC2B, ESC3A and ESC3B to generate the enable signals for each decoder. The decoder enable circuit 330 contains a NOR gate 520 and AND gates 522 . 526 . 527 . 528 and 529 , It will be appreciated by those skilled in the art that all individual decoders or a portion thereof may be implemented together in a single device, such as a programmable logic array. [0074] DasNOR-Gatter 520 setzt das EN1-Signal, wenn PRFX, ESC1 undESC2A alle negiert sind. Dieser Zustand entspricht der Bedingung,daß dieAnweisungsbit IN bis IN+7 nichtmit einem Präfix,einem Floating-Point-Escape-Opcode und auch nicht mit einem 2-Byte-Escape-Opcode übereinstimmen.Deshalb entsprechen die Anweisungsbit IN bisIN+7 einem Opcode einer regulären Ein-Byte-Anweisung.The NOR gate 520 sets the EN1 signal when PRFX, ESC1 and ESC2A are all negated. This condition corresponds to the condition that the instruction bits I N to I N + 7 do not match a prefix, a floating-point escape opcode, nor a 2-byte escape opcode. Therefore, the instruction bits I N through I N + 7 correspond to an opcode of a regular one-byte instruction. [0075] DasAND-Gatter 522 setzt das EN2-Signal, wenn das PRFX-Signalgesetzt und das ESC2B negiert ist. Das Setzen des EN2-Signals entsprichtder Bedingung, daß dieAnweisungsbit IN bis IN+7 mitdem Präfix-Code übereinstimmen,aber die Anweisungsbit IK bis IK+7 nichtmit dem 2-Byte-Escape-Opcode übereinstimmen. Deshalbentspricht diese Bedingung einem Opcode, der das Präfix alsQualifizierer einer regulärenAnweisung verwendet.The AND gate 522 sets the EN2 signal if the PRFX signal is set and the ESC2B is negated. The setting of the EN2 signal corresponds to the condition that the instruction bits I N to I N + 7 coincide with the prefix code, but the instruction bits I K to I K + 7 do not match the 2-byte escape opcode. Therefore, this condition corresponds to an opcode that uses the prefix as a qualifier of a regular statement. [0076] DasESC1-Signal wird als das EN3-Signal verwendet. Dieses Signal wirdgesetzt, wenn die Anweisungsbit IN bis IN+7 mit dem Floating-Point-Escape-Opcode übereinstimmen.Deshalb entspricht diese Bedingung einem Floating-Point-Opcode einerregulärenAnweisung.The ESC1 signal is used as the EN3 signal. This signal is asserted when the instruction bits I N through I N + 7 match the floating point escape opcode. Therefore, this condition corresponds to a floating-point opcode of a regular statement. [0077] DasAND-Gatter 528 setzt das EN4-Signal, wenn das ESC2A-Signalgesetzt und das ESC3B-Signal negiertist. Das Setzen des EN4-Signals entspricht der Bedingung, daß die AnweisungsbitIN bis IN+7 mitdem 2-Byte-Escape-Opcode übereinstimmenund die Anweisungsbit IL bis IL+7 nichtmit der zweiten Hälfteirgendwelcher der Drei-Byte-Escape-Opcodes übereinstimmen. Deshalb entsprichtdiese Bedingung einem Opcode des erweiterten Anweisungstyps 0.The AND gate 528 sets the EN4 signal when the ESC2A signal is set and the ESC3B signal is negated. The setting of the EN4 signal corresponds to the condition that the instruction bits I N to I N + 7 coincide with the 2-byte escape opcode and instruction bits I L to I L + 7 not with the second half of any of the three-byte -Escape opcodes match. Therefore, this condition corresponds to an opcode of extended instruction type 0. [0078] DasAND-Gatter 526 setzt das EN5-Signal, wenn die Signale PRFXund ESC2B gesetzt und das Signal ESC3B nicht gesetzt ist. DieserZustand entspricht der Bedingung, daß die Anweisungsbit IN bis IN+7 mit demPräfixcode übereinstimmenund die Anweisungsbit IK bis IK+7 mitdem 2-Byte-Escape-Opcode übereinstimmen,aber die Anweisungsbit IL bis IL+7 nichtmit der zweiten Hälfteirgendwelcher der Drei-Byte-Escape-Opcodes übereinstimmen.The AND gate 526 sets the EN5 signal when the signals PRFX and ESC2B are set and the sig If ESC3B is not set. This condition corresponds to the condition that the instruction bits I N to I N + 7 coincide with the prefix code and the instruction bits I K to I K + 7 coincide with the 2-byte escape opcode, but the instruction bits I L to I L + 7 does not match the second half of any of the three-byte escape opcodes. [0079] Deshalbentspricht diese Bedingung einem Opcode des erweiterten Anweisungstyps1.ThereforeThis condition corresponds to an opcode of the extended statement type1. [0080] DasAND-Gatter 527 setzt das EN6-Signal, wenn das ESC2A-Signalund das ESC3B-Signal beide gesetzt sind. Das Setzen des EN6-Signalsentspricht der Bedingung, daß dieAnweisungsbit IN bis IN+7 mitdem 2-Byte-Escape-Opcode übereinstimmenund die Anweisungsbit IL bis IL+7 mitder zweiten Hälfteeines der Drei-Byte-Escape-Opcodes übereinstimmen. Deshalb entsprichtdiese Bedingung einem Opcode des neuen Anweisungstyps 0.The AND gate 527 sets the EN6 signal when the ESC2A signal and the ESC3B signal are both set. The setting of the EN6 signal corresponds to the condition that the instruction bits I N to I N + 7 with the 2-byte escape opcode match and the instruction bits I L I L + 7 to the second half of the three-byte Escape opcodes match. Therefore, this condition corresponds to an opcode of the new instruction type 0. [0081] DasAND-Gatter 529 setzt das EN7-Signal, wenn die Signale PRFX,ESC2B und ESC3B gesetzt sind. Das Setzen des EN7-Signals entsprichtder Bedingung, daß dieAnweisungsbit IN bis IN+7 mitdem Präfixcode übereinstimmenund die Anweisungsbit IK bis IK+7 mitdem 2-Byte-Escape-Opcode übereinstimmenund die Anweisungsbit IL bis IL+7 mitder zweiten Hälfeeines der Drei-Byte-Escape-Opcodes übereinstimmen. Deshalb entsprichtdiese Bedingung einem Opcode des neuen Anweisungstyps 1.The AND gate 529 sets the EN7 signal when the signals PRFX, ESC2B and ESC3B are set. The setting of the EN7 signal corresponds to the condition that the instruction bits I N to I N + 7 coincide with the prefix code and the instruction bits I K to I K + 7 coincide with the 2-byte escape opcode and the instruction bits I L to I L + 7 match the second half of one of the three-byte escape opcodes. Therefore, this condition corresponds to an opcode of the new instruction type 1. [0082] DerOpcode-Decoder 340 enthälteinen regulärenEin-Byte-Decoder 530, einen regulären Präfixdecoder 532, einenregulärenEscape-Decoder 534, einen Decoder 536 für den erweitertenAnweisungstyp 0, eine Decoder 538 für den erweiterten Anweisungstyp1, einen Decoder 440 fürden neuen Anweisungstyp 0 und einen Decoder 542 für den neuenAnweisungstyp 1. Obwohl diese Decoder 530, 532, 534, 536, 538, 440, 542 inseparaten Blöckengezeigt sind, kann in der Praxis die Decodierung dieser Anweisungenkombiniert werden.The opcode decoder 340 contains a regular one-byte decoder 530 , a regular prefix decoder 532 , a regular escape decoder 534 , a decoder 536 for the extended instruction type 0, a decoder 538 for the extended instruction type 1, a decoder 440 for the new instruction type 0 and a decoder 542 for the new instruction type 1. Although this decoder 530 . 532 . 534 . 536 . 538 . 440 . 542 are shown in separate blocks, in practice the decoding of these instructions can be combined. [0083] 6 ist ein Flußdiagrammeines Verfahrens 600 zur Durchführung der Anweisungsdecodierungfür Anweisungeneines in einem Anweisungssatz definierten Formats, wobei der AnweisungssatzAnweisungen enthält,die unter Verwendung von 3-Byte-Escape-Opcodescodiert werden. FürFachleute ist erkennbar, daß diein 6 dargestellten Verarbeitungsblöcke 602–636 nichtin der gezeigten Reihenfolge durchgeführt werden müssen. DieseVerarbeitungsblöcke 602–636 können ineiner anderen Reihenfolge durchgeführt werden. Zum Beispiel kanndie Präfix-Gültig-Bestimmung 602 nachden Zwei-Byte-Escape-Opcode-Bestimmungen 604, 610 durchgeführt werden.Als Alternative könnenbestimmte oder alle der in 6 dargestelltenVerarbeitungsblöckegleichzeitig mit der Verarbeitung anderer Blöcke durchgeführt werden. 6 is a flowchart of a method 600 for performing instruction decoding for instructions of a format defined in an instruction set, the instruction set containing instructions encoded using 3-byte escape opcodes. It will be apparent to those skilled in the art that the in 6 represented processing blocks 602-636 not have to be performed in the order shown. These processing blocks 602-636 can be done in a different order. For example, the prefix valid determination 602 after the two-byte escape opcode provisions 604 . 610 be performed. As an alternative, some or all of the 6 processing blocks are performed simultaneously with the processing of other blocks. [0084] 6 zeigt, daß das Verfahren 600 beiSTART beginnt, und die Verarbeitung schreitet zum Block 602 voran.In Block 602 bestimmt das Verfahren 600, ob daserste Byte, die Anweisungsbit IN bis IN+7, mit dem Präfixcode 0x66 übereinstimmen.Wenn nicht, schreitet die Verarbeitung zum Block 604 voran.Andernfalls schreitet die Verarbeitung zum Block 610 voran. 6 shows that the process 600 at START, and processing proceeds to the block 602 Ahead. In block 602 determines the procedure 600 whether the first byte, the instruction bits I N to I N + 7 , match the prefix code 0x66. If not, processing proceeds to the block 604 Ahead. Otherwise, processing proceeds to the block 610 Ahead. [0085] ImBlock 610 bestimmt das Verfahren 600, ob das zweiteByte der Anweisung, die Anweisungsbit IN bisIN+7, mit einem 2-Byte-Escape-Opcode-Wert übereinstimmen.Bei mindestens einer Ausführungsformbeträgtder Wert des Zwei-Byte-Escape-Opcodes 0x0F. Wenn die Escape-Opcode-Prüfung 610 „false" ergibt, schreitetdie Verarbeitung zum Block 624 voran. Im Block 624 wurdebestimmt, daß daserste Byte, die Anweisungsbit IN bis IN+7, mit dem Präfixcode 0x66 übereinstimmen(siehe Block 602), und daß das zweite Byte, die AnweisungsbitIK bis IK+7, nichtmit dem Zwei-Byte-Escape-Opcode übereinstimmen(siehe Block 610). Folglich wird im Block 624 daszweite Byte der Anweisung, die Anweisungsbit IK bisIK+7, als der Opcode einer regulären Anweisungmit einem Präfixqualifiziererdecodiert.In the block 610 determines the procedure 600 whether the second byte of the instruction, the instruction bits I N to I N + 7 , match a 2-byte escape opcode value. In at least one embodiment, the value of the two-byte escape opcode is 0x0F. If the escape opcode exam 610 Returns false, processing proceeds to the block 624 Ahead. In the block 624 It has been determined that the first byte, the instruction bits I N through I N + 7 , coincide with the prefix code 0x66 (see block 602 ) and that the second byte, instruction bits I K through I K + 7 , do not match the two-byte escape opcode (see block 610 ). Consequently, in the block 624 the second byte of the instruction which decodes instruction bits I K through I K + 7 as the opcode of a regular instruction with a prefix qualifier. [0086] Wenndie Escape-Opcode-Prüfung 610 „true" ergibt, schreitetdie Verarbeitung zum Block 628 voran, um zu bestimmen,ob die Anweisung eine neue Typ-1-Anweisung ist. Im Block 628 bestimmtdas Verfahren, ob das dritte Byte der Anweisung, die AnweisungsbitIL bis IL+7, mitder zweiten Hälfteeines Drei-Byte-Escape-Opcode-Werts übereinstimmen. Bei mindestenseiner Ausführungsformlauten die Drei-Byte-Escape-Opcode-Werte 0x0F38, 0x0F39, 0x0F3Aund 0x0F3B. Folglich wird im Block 628 bestimmt, ob dasdritte Byte der Anweisung, die Anweisungsbit IL bisIL+7, mit den Werten 0x038, 0x039, 0x03oder 0x03B übereinstimmen. Wennnicht, schreitet die Verarbeitung zum Block 632 voran.Wenn die Drei-Byte-Escape-Opcode-Prüfung 628 jedoch trueergibt, schreitet die Verarbeitung zum Block 634 voran.Im Block 634 wird das vierte Byte der Anweisung, die AnweisungsbyteIM bis IM+7, alsder Opcode einer neuen Typ-1-Anweisung decodiert. Die Verarbeitungendet dann.If the escape opcode exam 610 "True", processing proceeds to the block 628 to determine if the statement is a new Type 1 statement. In the block 628 the method determines whether the third byte of the instruction, the instruction bits I L through I L + 7 , matches the second half of a three-byte escape opcode value. In at least one embodiment, the three-byte escape opcode values are 0x0F38, 0x0F39, 0x0F3A, and 0x0F3B. Consequently, in the block 628 determines whether the third byte of the instruction, the instruction bits I L to I L + 7 , match the values 0x038, 0x039, 0x03 or 0x03B. If not, processing proceeds to the block 632 Ahead. If the three-byte escape opcode exam 628 but true, processing moves to the block 634 Ahead. In the block 634 For example, the fourth byte of the instruction, instruction byte I M through I M + 7 , is decoded as the opcode of a new type 1 instruction. The processing then ends. [0087] ImBlock 632 wird das dritte Byte der Anweisung, die AnweisungsbitIL bis IL+7, alsder Opcode einer erweiterten Typ-1-Anweisung mit dem Wert 0x66 indem erste Byte der Anweisung und dem Zwei-Byte-Escape-Opcode-Wert0x0F in dem zweiten Byte der Anweisung decodiert. Die Verarbeitungendet dann.In the block 632 becomes the third byte of the instruction, the instruction bits I L to I L + 7 , as the opcode of a extended type 1 instruction with the value 0x66 in the first byte of the instruction and the two-byte escape opcode value 0x0F in the second byte of the instruction decoded. The processing then ends. [0088] ImBlock 604 wird die Verarbeitung fortgesetzt, wenn im Block 602 bestimmtwurde, daß daserste Byte der Anweisung, die Anweisungsbit IK bisIK+7, nicht mit dem Präfixwert 0x66 übereinstimmen.Im Block 604 wird bestimmt, ob das erste Byte der Anweisung,die Anweisungsbit IK bis IK+7,mit dem Zwei-Byte-Escape-Wert übereinstimmt.Wenn nicht, schreitet die Verarbeitung zum Block 606 voran.Wenn jedoch die Zwei-Byte-Escape-Opcode-Auswertung 604 „true" ergibt, wird dieVerarbeitung im Block 620 fortgesetzt, um zu bestimmen, obdie Anweisung eine neue Typ-0-Anweisung ist.In the block 604 processing is continued if in the block 602 it has been determined that the first byte of the instruction, the instruction bits I K to I K + 7 , do not match the prefix value 0x66. In the block 604 it is determined whether the first byte of the instruction, the instruction bits I K to I K + 7 , matches the two-byte escape value. If not, processing proceeds to the block 606 Ahead. However, if the two-byte escape opcode evaluation 604 "True", the processing is in the block 620 continued to determine if the instruction is a new type 0 instruction. [0089] ImBlock 620 bestimmt das Verfahren, ob das zweite Byte derAnweisung, die Anweisungsbit IK bis IK+7, mit der zweiten Hälfte eines Drei-Byte-Escape-Opcode-Werts übereinstimmen.Bei mindestens einer Ausführungsformlauten die Drei-Byte-Escape-Opcode-Werte 0x0F38, 0x0F39, 0x0F3Aund 0x0F3B. Folglich wird im Block 620 bestimmt, ob daszweite Byte der Anweisung, die Anweisungsbit IK bisIK+7, mit den Werten 0x38, 0x39, 0x3A oder0x3B übereinstimmt.Wenn nicht, schreitet die Verarbeitung zum Block 622 voran.Wenn jedoch die Drei-Byte-Escape-Opcode-Prüfung 620 true ergibt,schreitet die Verarbeitung zum Block 630 voran. Im Block 630 wirddas dritte Byte der Anweisung, die Anweisungsbyte IL bisIL+7, als der Opcode einer neuen Typ-0-Anweisungdecodiert. Die Verarbeitung endet dann.In the block 620 determines whether the second byte of the instruction, the instruction bits I K to I K + 7 , with the second half of a three-byte escape opcode value match. In at least one embodiment, the three-byte escape opcode values are 0x0F38, 0x0F39, 0x0F3A, and 0x0F3B. Consequently, in the block 620 determines whether the second byte of the instruction, the instruction bits I K to I K + 7 , matches the values 0x38, 0x39, 0x3A or 0x3B. If not, processing proceeds to the block 622 Ahead. However, if the three-byte escape opcode check 620 true, processing moves to the block 630 Ahead. In the block 630 For example, the third byte of the instruction, the instruction bytes I L through I L + 7 , is decoded as the opcode of a new type 0 instruction. The processing then ends. [0090] Wenndie Drei-Byte-Escape-Opcode-Prüfung 620 „false" ergibt, schreitetdie Verarbeitung zum Block 622 voran. Im Block 622 wirddas dritte Byte der Anweisung, Anweisungsbyte IL bisIL+7, als der Opcode einer erweiterten Typ-0-Anweisungmit dem Präfixwert0x66 in dem ersten Byte und dem Zwei-Byte-Opcode-Wert 0x0F in seinemzweiten Byte decodiert.If the three-byte escape opcode exam 620 Returns false, processing proceeds to the block 622 Ahead. In the block 622 For example, the third byte of the instruction, instruction byte I L to I L + 7 , is decoded as the opcode of an extended type 0 instruction with the prefix value 0x66 in the first byte and the two byte opcode value 0x0F in its second byte. [0091] ImBlock 606 wird die Verarbeitung fortgesetzt, wenn im Block 604 bestimmtwurde, daß daserste Byte der Anweisung, die Anweisungsbit IK bisIK+7 nicht mit dem Zwei-Byte-Escape-Opcode-Wert übereinstimmt.Im Block 606 bestimmt das Verfahren 600, ob daserste Byte mit einem weiteren Escape-Opcode übereinstimmt (z.B. dem Floating-Point-Escape-Opcodes – 0xD8 bis0xDF). Wenn nicht, schreitet die Verarbeitung zum Block 636 voran,um das erste Byte als eine reguläreEin-Byte-Anweisung zu decodieren. Die Verarbeitung endet dann.In the block 606 processing is continued if in the block 604 it has been determined that the first byte of the instruction, the instruction bits I K through I K + 7, do not match the two-byte escape opcode value. In the block 606 determines the procedure 600 whether the first byte matches another escape opcode (eg the floating point escape opcode - 0xD8 to 0xDF). If not, processing proceeds to the block 636 to decode the first byte as a regular one-byte instruction. The processing then ends. [0092] Wennjedoch die Anderer-Escape-Code-Auswertung 606 „true" ergibt, schreitetdie Verarbeitung zum Block 626 voran, in dem das zweiteByte als der Opcode anderer regulärer Anweisungen (z.B. Floating-Point-Anweisungen)decodiert wird. Die Verarbeitung endet dann.However, if the other-escape code evaluation 606 "True", processing proceeds to the block 626 in which the second byte is decoded as the opcode of other regular instructions (eg, floating-point instructions). The processing then ends. [0093] 7 zeigt ein Verfahren 700 zurBestimmung der Längeeiner Anweisung, die aus dem Speicher abgerufen wurde. Bei mindestenseiner Ausführungsformwird das Verfahren 700 durch einen Anweisungslängendecoder(wie z.B. 306 in 3)durchgeführt. 7 shows a method 700 to determine the length of an instruction retrieved from memory. In at least one embodiment, the method 700 by an instruction length decoder (such as 306 in 3 ) carried out. [0094] 7 zeigt, daß die Verarbeitungbei START beginnt und zum Block 702 voranschreitet. ImBlock 702 wird bestimmt, ob das aktuelle Anweisungsbyteein Präfixbyteist. Bei einem ersten Durchgang des Verfahrens 700 istdas aktuelle Byte das erste Byte einer Anweisung. Wenn im Block 702 bestimmtwird, daß dasaktuelle Byte einen Präfixwertenthält,so wie er in dem Anweisungssatz definiert wird, dann wird das Präfix im Block 712 verarbeitetund das nächsteByte wird zur Verarbeitung abgerufen. 7 shows that processing starts at START and goes to block 702 progresses. In the block 702 It is determined whether the current instruction byte is a prefix byte. For a first pass of the procedure 700 the current byte is the first byte of a statement. If in the block 702 it is determined that the current byte contains a prefix value as defined in the instruction set, then the prefix is in the block 712 is processed and the next byte is fetched for processing. [0095] DieVerarbeitung kehrt dann zum Block 702 zurück, um zubestimmen, ob das neue aktuelle Byte, das im Block 712 abgerufenwurde, einen Präfixwertenthält.Auf diese Weise ermöglichtdas Verfahren 700 das Decodieren der Länge einer Anweisung, die mehrerePräfixbyteenthält.Bei mindestens einer Ausführungsformkann, wie oben erwähnt,eine Anweisung bis zu vier Präfixbyteenthalten.The processing then returns to the block 702 back to determine if the new current byte in the block 712 that contains a prefix value. In this way, the procedure allows 700 decoding the length of an instruction containing multiple prefix bytes. In at least one embodiment, as noted above, an instruction may contain up to four prefix bytes. [0096] Wennim Block 702 bestimmt wird, daß das aktuelle Byte der Anweisungeinen Präfixwertenthält, schreitetdie Verarbeitung zum Block 704 voran. Im Block 704 wirdbestimmt, ob das aktuelle Byte der Anweisung einen Zwei-Byte-Escape-Opcode-Wert,wie zum Beispiel 0x0F, enthält.Wenn nicht, schreitet die Verarbeitung zum Block 714 voran,der nachstehend ausführlicherbesprochen wird.If in the block 702 it is determined that the current byte of the instruction contains a prefix value, the processing proceeds to the block 704 Ahead. In the block 704 It is determined whether the current byte of the instruction contains a two-byte escape opcode value, such as 0x0F. If not, processing proceeds to the block 714 which will be discussed in more detail below. [0097] Wennim Block 704 bestimmt wird, daß das aktuelle Byte der Anweisungden Zwei-Byte-Escape-Opcode-Wertenthält,kann die Anweisung entweder eine neue Typ-0- oder eine neue Typ-1-Anweisungsein. Folglich wird im Block 705 das nächste Byte der Anweisung erhaltenund im Block 706 wird bestimmt, ob das neuerhaltene Byteeinen der 3-Byte-Escape-Code-Werteenthält.Wenn dies der Fall ist, wurde bestimmt, daß die Anweisung eine neue Typ-0- oder Typ-1-Anweisungist.If in the block 704 it is determined that the current byte of the instruction contains the two-byte escape opcode value, the instruction may be either a new type 0 or a new type 1 instruction. Consequently, in the block 705 get the next byte of the statement and in the block 706 it is determined if the newly acquired byte contains one of the 3-byte escape code values. If so, it was determined that the instruction is a new type 0 or type 1 instruction. [0098] Umdie Längeder neuen Typ-0- oder der neuen Typ-1-Anweisung zu bestimmen, wirdder Inhalt des modR/M-Felds 230 ausgewertet. Folglich wirdim Block 707 der Inhalt des modR/M-Bytes für den aktuellenAnweisungscode abgerufen. Im Block 708 wird bestimmt, obder modR/M-Wert angibt, daß einSIB-Wert aus dem aktuellen Anweisungscode abgerufen werden soll.Wenn dies der Fall ist, wird der gesamte Inhalt des SIB-Felds 240 (2) oder ein Teil davon abgerufen,und die Verarbeitung schreitet zum Block 710 voran. Wennnicht, schreitet die Verarbeitung zum Block 710 voran.Insbesondere ist es aufgrund des vereinfachten Längendecodierverfahrens (sieheBlock 710), das hier offengelegt wird, nicht notwendig,den Inhalt des anweisungsspezifischen Opcode-Felds 225 (2) auszuwerten, wenn dieLänge einerneuen Typ-0- oder neuen Typ-1-Anweisung decodiert wird. Folglichwird kein solches Byte abgerufen und es wird also im Block 707 „übersprungen".To determine the length of the new type 0 or new type 1 statement, the contents of the modR / M field 230 evaluated. Consequently, in the block 707 retrieves the contents of the modR / M byte for the current instruction code. In the block 708 determines whether the modR / M value indicates that an SIB value is to be retrieved from the current instruction code. If so, the entire contents of the SIB field become 240 ( 2 ) or a part thereof, and the processing proceeds to the block 710 Ahead. If not, processing proceeds to the block 710 Ahead. In particular, due to the simplified length decoding method (see block 710 ), which is disclosed herein, does not require the contents of the instruction-specific opcode field 225 ( 2 ) when decoding the length of a new type 0 or new type 1 instruction. As a result, no such byte is retrieved and so it is in the block 707 "Skipped". [0099] ImBlock 710 wird die Längevon neuen Typ-1- und neuen Typ-0-Anweisungen bestimmt, um festzustellen,wo die Anweisung beginnt und endet. Um die Länge der Anweisung zu bestimmen,wertet Block 710 den Inhalt von mindestens drei Byte derAnweisung aus. Natürlichist fürFachleute erkennbar, daß mehroder weniger Byte auswertet werden können, um die Länge vonvon neuen Typ-1- und neuen Typ-0-Anweisungen verschiedenen Anweisungenzu bestimmen.In the block 710 The length of new type 1 and new type 0 instructions is determined to determine where the statement begins and ends. To determine the length of the statement evaluates block 710 the contents of at least three bytes of the statement. Of course, it will be appreciated by those skilled in the art that more or fewer bytes may be evaluated to determine the length of instructions other than new type 1 and new type 0 instructions. [0100] ImBlock 710 wird das erste, das zweite und das vierte Anweisungsbyteausgewertet, um die Länge einerneuen Typ-0-Anweisung zu bestimmen. Zusätzlich werden mindestens bestimmteBit eines fünftenAnweisungsbyte ausgewertet, wenn ein SIB-Wert vorhanden ist. Dasheißt,bei einer neuen Typ-0-Anweisung wertet Block 710 den Inhaltdes Drei-Byte-Escape-Opcode-Felds 118c (2), des modR/M-Felds (230, 2) und von 3 Bit des SIB-Felds(240, 2) aus,wenn ein Wert fürdas SIB-Feld vorhanden ist. Die Länge wird folgendermaßen bestimmt: Wenn((Byte1 = 0x0F) AND (Byte2 == 0x38 oder 0x39 oder 0x3A oder 0x3B)AND (Byte4 = modR/M-Byte hat keine Verschiebung und kein SIB erforderlich))dann Instruction_length = 4.In the block 710 the first, second and fourth instruction bytes are evaluated to determine the length of a new type 0 instruction. In addition, at least certain bits of a fifth instruction byte are evaluated if an SIB value is present. That is, at a new type 0 statement evaluates block 710 the contents of the three-byte escape opcode field 118c ( 2 ), the modR / M field ( 230 . 2 ) and 3 bits of the SIB field ( 240 . 2 ) if there is a value for the SIB field. The length is determined as follows: If ((Byte1 = 0x0F) AND (Byte2 == 0x38 or 0x39 or 0x3A or 0x3B) AND (Byte4 = modR / M byte does not require a shift and no SIB)) then Instruction_length = 4. [0101] Ansonstenwenn ((Byte1 == 0x0f) AND (Byte2 == 0x38 oder 0x39 oder 0x3A oder0x3B) AND (Byte4 = modR/M-Byte hat Verschiebung oder SIB erforderlich))dann Anweisungs-Länge wirdauf der Basis des Werts des modR/M-Felds (230, 2) und des Werts von 3 Bitin dem SIB-Feld (240, 2)berechnet.Otherwise, if ((Byte1 == 0x0f) AND (Byte2 == 0x38 or 0x39 or 0x3A or 0x3B) AND (Byte4 = modR / M byte has shift or SIB required)) then statement length will be based on the value of the modR / M field ( 230 . 2 ) and the value of 3 bits in the SIB field ( 240 . 2 ). [0102] Folglichmuß derLängendecodierblock 710 für eine neueTyp-0-Anweisung nicht das dritte Opcode-Byte auswerten, um die Länge derAnweisung zu bestimmen. Außerdemempfängtfür jedeOpcode-Map die entsprechende Längenbestimmungslogikdenselben Satz fester Eingaben, um die Länge jeder Anweisung in derjeweiligen Map auszuwerten. Zum Beispiel wertet für die 0x0F38-Opcode-Mapdie Längenbestimmungslogikdas modR/M-Byte im Block 708 aus. Wenn der Wert in demmodR/M-Byte angibt, daß keinSIB-Byte in dem aktuellen Anweisungscode vorhanden ist, dann wirddie Anweisungslängeohne Auswertung eines SIB-Bytes decodiert 710.Consequently, the length decoding block 710 for a new type 0 instruction, do not evaluate the third opcode byte to determine the length of the instruction. In addition, for each opcode map, the corresponding length determination logic receives the same set of fixed inputs to evaluate the length of each instruction in the particular map. For example, for the 0x0F38 opcode map, the length determination logic evaluates the modR / M byte in the block 708 out. If the value in the modR / M byte indicates that there is no SIB byte in the current instruction code, then the instruction length is decoded without evaluating a SIB byte 710 , [0103] Wenndagegen ein SIB-Wert vorhanden ist, dann werden ein oder mehrereBit in dem SIB-Feld 240 (2) ausgewertet, um die Länge desAnweisungscodes zu bestimmen 710. Der Wert in dem anweisungsspezifischenOpcode-Feld 225 (2)wird nicht ausgewertet, um die Längeeiner Anweisung in der 0x0F38-Opcode-Map zu bestimmen. Auch wirdkein Eingangsterm außermodR/M- und SIB-Werten (falls angegeben) für irgendeine Anweisung in derOpcode-Map ausgewertet. Folglich wird ein fester Satz Eingangstermeausgewertet, um die Längeeiner Anweisung in der gegebenen Opcode-Map zu bestimmen, wobeijede Eingabe fürdie Bestimmung der Längejeder Anweisung in der Opcode-Map relevant ist.On the other hand, if there is an SIB value, then one or more bits will be in the SIB field 240 ( 2 ) to determine the length of the instruction code 710 , The value in the instruction-specific opcode field 225 ( 2 ) is not evaluated to determine the length of an instruction in the 0x0F38 opcode map. Also, no input term except modR / M and SIB values (if specified) is evaluated for any instruction in the opcode map. Thus, a fixed set of input terms is evaluated to determine the length of an instruction in the given opcode map, where each input is relevant to determining the length of each instruction in the opcode map. [0104] Einbestimmter Eingabeterm ist fürdie Bestimmung der Längeeines Anweisungscodes „relevant", wenn, wenn derWert eines oder mehrerer anderer Eingabeterme gegeben ist, der bestimmteEingabeterm zur Bestimmung der Längedes Anweisungscodes verwendet wird. Zum Beispiel ist der SIB-Wertfür jedeAnweisung in der 0x0F38-Opcode-Map relevant, weil für jede Anweisungin der Map der SIB-Wert ausgewertet wird, um Länge abhängig von dem Wert des modR/Mzu bestimmen. Im Gegensatz dazu ist der Wert des anweisungsspezifischenOpcodes 225 (2)nicht fürdie Bestimmung der Längeirgendeiner Anweisung in der 0xF38-Opcode-Map relevant, weil ernicht ausgewertet wird, um Längezu bestimmen (ungeachtet des Werts der anderen Eingabeterme). Ähnlich sindandere Eingabeterme, wie zum Beispiel der Wert der Verschiebungsfelds 250 (2) für die Bestimmung der Anweisungslänge nichtrelevant, wenn sie unter keiner Kombination von Werten der anderenrelevanten Eingabeterme zur Auswertung der Anweisungslänge verwendetwerden würden.A particular input term is "relevant" for determining the length of an instruction code if, if the value of one or more other input terms is given, the particular input term is used to determine the length of the instruction code, for example, the SIB value for each instruction in the 0x0F38 opcode map, because for each statement in the map, the SIB value is evaluated to determine length depending on the value of the modR / M. In contrast, the value of the instruction-specific opcode is 225 ( 2 ) is not relevant to determining the length of any instruction in the 0xF38 opcode map because it is not evaluated to determine length (regardless of the value of the other input terms). Similar are other input terms, such as the value of the displacement field 250 ( 2 ) are not relevant to the determination of the instruction length if they were not used under a combination of values of the other relevant input terms for evaluation of the instruction length. [0105] Aufdiese Weise wird die Decodierlogik für einen neuen Typ 0 relativsimpel gehalten. Bei mindestens einer Ausführungsform werden keine zusätzlichenByte ausgewertet, um zu bestimmen, welche Längendecodierlogik im Vergleichzu der Anzahl von Byte, die ausgewertet werden, um zu bestimmen,welche Längendecodierlogikfür eineerweiterte Typ-0-Anweisungverwendet werden soll, füreine neue Typ-0-Anweisung verwendet werden soll. Diese Einfachheitwird füralle Anweisungen in den neuen Opcode-Maps aufrechterhalten, weildasselbe Verfahren angewandt wird, um die Länge jeder Anweisung in einergegebenen Opcode-Map zu bestimmen.In this way, the decoding logic for a new type 0 is kept relatively simple. In at least one embodiment, no additional bytes are evaluated to determine which length dec This logic is used for a new type 0 instruction as compared to the number of bytes that are evaluated to determine which length decoding logic to use for an extended type 0 instruction. This simplicity is maintained for all instructions in the new opcode maps because the same procedure is used to determine the length of each instruction in a given opcode map. [0106] EineOpcode-Map soll hier die Gruppe von Anweisungen bedeuten, die durcheine bestimmte Kombination von Werten in den Anweisungsbyte spezifiziertsind. Zum Beispiel werden alle Anweisungen, die durch 0F:38:1b"xxxxxxxx" und 66:0F:38:1b"xxxxxxxx" spezifiziert werden,als Teil der Opcode-Map fürden 0F:38-3-Byte-Escape-Opcode-Wert betrachtet. Ähnlich soll die 0F:39-Opcode-Mapdie Gruppe von Anweisungen bedeuten, die durch 0F:39:1b"xxxxxxxx" und 66:0F:39:1b"xxxxxxxx" spezifiziert wird;die 0F:3A-Opcode-Map soll die Gruppe von Anweisungen bedeuten, diedurch 0F:3A:1b"xxxxxxxx" und 66:0F:3A:1b"xxxxxxxx" spezifiziert wird,und die 0F:3B-Opcode-Map soll die Gruppe von Anweisungen bedeuten,wie durch 0F:3B:1b"xxxxxxxx" und 66:0F:3B:1b"xxxxxxxx" spezifiziert wird,wobei 1b"xxxxxxxx" ein definierterOpcode fürdie spezifierte Opcode-Mapist.AOpcode Map is meant here to mean the set of instructions that go throughspecifies a particular combination of values in the instruction byteare. For example, all instructions specified by 0F: 38: 1b "xxxxxxxx" and 66: 0F: 38: 1b "xxxxxxxx" will be specified.as part of the opcode map forConsider the 0F: 38-3-byte escape opcode value. Similarly, the 0F: 39 opcode mapmean the set of instructions specified by 0F: 39: 1b "xxxxxxxx" and 66: 0F: 39: 1b "xxxxxxxx";the 0F: 3A opcode map is intended to mean the set of instructions thatspecified by 0F: 3A: 1b "xxxxxxxx" and 66: 0F: 3A: 1b "xxxxxxxx",and the 0F: 3B opcode map should mean the set of instructionsas specified by 0F: 3B: 1b "xxxxxxxx" and 66: 0F: 3B: 1b "xxxxxxxx",where 1b "xxxxxxxx" is a definedOpcode forthe specified opcode mapis. [0107] ImBlock 710 werden das zweite, das dritte und das fünfte Anweisungsbyteausgewertet, um die Länge einerneuen Typ-1-Anweisung zu bestimmen. Zusätzlich werden mindestens bestimmteBit eines sechsten Anweisungsbytes ausgewertet, wenn ein SIB-Wertvorhanden ist. Ähnlichwie bei der Verarbeitung fürneue Typ-0-Anweisungen, wertet Block 622 die zwei Byte,die den 3-Byte-Escape-Opcode-Feldwert (118c, 1) halten, das modR/M-Feld(230, 2) und3 Bit des SIB-Felds (240, 2)aus, wenn ein Wert fürdas SIB-Feld vorhanden ist. Die Länge wird folgendermaßen bestimmt: Wenn((Byte2 == 0x0F) AND (Byte3 == 0x38 oder 0x39 oder 0x3A oder 0x3B)AND (Byte5 = modR/M-Byte hat keine Verschiebung und kein SIB erforderlich)dann Instruction_length = 4.In the block 710 the second, third, and fifth instruction bytes are evaluated to determine the length of a new type 1 instruction. In addition, at least certain bits of a sixth instruction byte are evaluated if an SIB value is present. Similar to processing for new type 0 statements, block evaluates 622 the two bytes representing the 3-byte escape opcode field value ( 118c . 1 ), the modR / M field ( 230 . 2 ) and 3 bits of the SIB field ( 240 . 2 ) if there is a value for the SIB field. The length is determined as follows: If ((Byte2 == 0x0F) AND (Byte3 == 0x38 or 0x39 or 0x3A or 0x3B) AND (Byte5 = modR / M byte has no shift and no SIB required) then Instruction_length = 4. [0108] Ansonstenwenn ((Byte1 == 0x0F) AND (Byte2 == 0x38 oder 0x39 oder 0x3A oder0x3B) AND (Byte4 = modR/M-Byte hat Verschiebung oder SIB erforderlich))dann Anweisungs-Länge wirdauf der Basis des Werts des modR/M-Felds (230, 2) und des Werts von dreiBit in dem SIB-Feld (240, 2)berechnet.Otherwise if ((Byte1 == 0x0F) AND (Byte2 == 0x38 or 0x39 or 0x3A or 0x3B) AND (Byte4 = modR / M byte has shift or SIB required) then statement length is based on the value of the modR / M field ( 230 . 2 ) and the value of three bits in the SIB field ( 240 . 2 ). [0109] Folglichmuß derLängendecodierblock 710 für eine neueTyp-1-Anweisung nicht das dritte Opcode-Byte auswerten, um die Länge derAnweisung zu bestimmen. Auf diese Weise wird Decodierlogik für eine neueTyp-1-Anweisung relativ simpel gehalten. Bei mindestens einer Ausführungsformwerden keine zusätzlichenByte ausgewertet, um zu bestimmen, welche Längendecodierlogik im Vergleichzu der Anzahl von Byte, die ausgewertet werden, um zu bestimmen,welche Längendecodierlogikfür eineerweiterte Typ-1-Anweisung verwendet werden soll, für eine neueTyp-1-Anweisung verwendet werden soll.Consequently, the length decoding block 710 for a new type 1 instruction, do not evaluate the third opcode byte to determine the length of the instruction. In this way, decoding logic for a new type 1 instruction is kept relatively simple. In at least one embodiment, no additional bytes are evaluated to determine which length decoding logic to use for a new type compared to the number of bytes that are evaluated to determine which length decoding logic to use for an extended type 1 instruction -1 statement should be used. [0110] Wiebereits erwähnt,wird die Einfachheit der Längendecodierverarbeitung 710 für neue Typ-0- und Typ-1-Anweisungenerhalten, indem die Opcode-Maps und ihre entsprechende Längebestimmungslogikso definiert werden, daß eineeinzige Festeingabe-Längenbestimmungverwendet wird, um die Längejeder Anweisung in der jeweiligen Opcode-Map zu bestimmen. Die Länge jederAnweisung in einer bestimmten 3-Byte-Opcode-Map wird somit durch dasselbeVerfahren wie bei allen anderen Anweisungen mit diesem 3-Byte-Opcode-Wertbestimmt. Das heißt,jeder der 3-Byte-Opcode-Werte – 0x0F38,0x0F39, 0x0F3A, 0x0F3B – istmit einer Opcode-Map assoziiert, wobei die Länge dieser Anweisung der Opcode-Mapdurch dasselbe Festeingabeverfahren bestimmt wird.As already mentioned, the simplicity of the length decoding processing becomes 710 for new type 0 and type 1 instructions by defining the opcode maps and their corresponding length designation logic such that a single hard-entry length determination is used to determine the length of each instruction in the respective opcode map. The length of each instruction in a given 3-byte opcode map is thus determined by the same method as in all other instructions with that 3-byte opcode value. That is, each of the 3-byte opcode values - 0x0F38, 0x0F39, 0x0F3A, 0x0F3B - is associated with an opcode map, the length of this opcode map instruction being determined by the same hard entry method. [0111] ZumBeispiel werden bei mindestens einer Ausführungsform alle Anweisungen,die mit dem Drei-Byte-Escape-Opcode-Wert 0x0F38 (siehe die obigeTabelle 1) durch Auswerten derselben vier Byte der Anweisung bestimmt.Diese vier Byte enthalten die beiden Byte, die den Drei-Byte-Escape-Opcode-Wert (0x0F38)enthalten, das Ein-Byte-Opcode-Feld, das den Opcode-Wert hält (wiein der obigen Tabelle 1 dargestellt) und das Ein-Byte-modR/M-Feld.Abhängigvon dem Wert in dem modR/M-Feld können außerdem zusätzlich drei Bit des SIB-Felds ausgewertetwerden, um die Anweisungslängeeiner Anweisung in der 0x0F38-Opcode- Maps zu bestimmen. In keiner Anweisungin der 0x0F38-Opcode-Map sind unmittelbare Daten enthalten.To theFor example, in at least one embodiment, all instructions,those with the three-byte escape opcode value 0x0F38 (see the aboveTable 1) by evaluating the same four bytes of the instruction.These four bytes contain the two bytes representing the three-byte escape opcode value (0x0F38)contain the one-byte opcode field that holds the opcode value (such asshown in Table 1 above) and the one byte modR / M field.DependentIn addition, three bits of the SIB field can be evaluated from the value in the modR / M fieldbe at the instruction lengthan instruction in the 0x0F38 opcode maps. In no instructionthe 0x0F38 opcode map contains immediate data. [0112] Ähnlich werdenbei mindestens einer Ausführungsformalle Anweisungen, die mit den Drei-Byte-Escape-Opcode-Wert 0x0F3A (siehedie obige Tabelle 1) assoziiert sind, durch dasselbe Verfahren bestimmt.Das Verfahren wertet die beiden Daten aus, die den Drei-Byte-Escape-Opcode-Wert (0x0F38)enthalten, das Ein-Byte-Opcode-Feld, das den Opcode-Wert hält (wiein der obigen Tabelle 1 dargestellt), das Ein-Byte-modR/M-Feld undein Ein-Byte-Feld, das unmittelbare Daten enthält. Abhängig von dem Wert in dem modR/M-Feldkönnenaußerdemzusätzlichdrei Bit des SIB-Felds ausgewertet werden, um Anweisungslänge einerAnweisung in der 0x0F38-Opcode-Map zu bestimmen.Similarly, in at least one embodiment, all instructions associated with the three-byte escape opcode value 0x0F3A (see Table 1 above) are determined by the same method. The method evaluates the two data containing the three-byte escape opcode value (0x0F38), the one-byte opcode field holding the opcode value (as shown in Table 1 above) One byte modR / M field and one byte field containing immediate data. In addition, depending on the value in the modR / M field, three additional bits of the SIB field can be evaluated at instruction length a statement in the 0x0F38 opcode map. [0113] 7 zeigt, daß wenn imBlock 706 bestimmt wird, daß das Byte einer Anweisung,das einem Byte folgt, das den Zwei-Byte-Escape-Opcode-Wert 0x0Fenthält,nicht einem der Drei-Byte-Escape-Opcode-Werte enthält, schreitetdie Verarbeitung zum Block 722 voran. 7 shows that when in block 706 determining that the byte of an instruction following a byte containing the two-byte escape opcode value 0x0F does not contain one of the three-byte escape opcode values, the processing proceeds to the block 722 Ahead. [0114] DieBlöcke 714, 716, 718, 719, 720 undBlöcke 722, 724, 726, 727 und 728 führen jeweilseine ähnlicheVerarbeitung durch. Der erstere Satz Blöcke wird durchgeführt, wennBlock 704 bestimmt, daß dieAnweisung nicht den Zwei-Byte-Escape-Opcode-Wert 0x0F enthält. DieBlöcke 722, 724, 726, 727 und 728 werden dagegendurchgeführt,wenn im Block 706 bestimmt wird, daß, obwohl das vorherige Byteden Zwei-Byte-Escape-Opcode-Wert 0x0F enthält, das aktuelle Byte nichteinen Drei-Byte-Escape-Opcode-Wert enthält.The blocks 714 . 716 . 718 . 719 . 720 and blocks 722 . 724 . 726 . 727 and 728 each perform similar processing. The former sentence blocks is performed when block 704 determines that the instruction does not contain the two-byte escape opcode value 0x0F. The blocks 722 . 724 . 726 . 727 and 728 are carried out against it when in the block 706 it is determined that although the previous byte contains the two byte escape opcode value 0x0F, the current byte does not contain a three byte escape opcode value. [0115] Für jedenFall wird in den Blöcken 714 bzw. 722 bestimmt,ob die aktuelle Anweisung einen modR/M-Wert enthält. Wenn dies der Fall ist,schreitet die Verarbeitung zu den Blöcken 718 bzw. 726 voran, indenen der modR/M-Wert erhalten wird. Wenn der modR/M-Wert angibt,daß einSIB-Wert abgerufen werden soll, wird im Block 719 bzw. 727 derSIB-Wert abgerufen. Die Längeder Anweisung wird in den Blöcken 720 bzw. 728 bestimmt,wobei der modR/M-Wert und gegebenenfalls ein oder mehrere Bit ausdem SIB-Feld verwendet werden. Die Verarbeitung endet dann.For each case will be in the blocks 714 respectively. 722 determines if the current statement contains a modR / M value. If so, processing proceeds to the blocks 718 respectively. 726 in which the modR / M value is obtained. If the modR / M value indicates that an SIB value is to be retrieved, then in the block 719 respectively. 727 the SIB value is retrieved. The length of the statement is in the blocks 720 respectively. 728 determined using the modR / M value and optionally one or more bits from the SIB field. The processing then ends. [0116] Wenndie aktuelle Anweisung einen modR/M-Wert enthält, schreitet die Verarbeitungzu den Blöcken 716 bzw. 724 voran,in denen die Längeder Anweisung decodiert wird, ohne einen modR/M-Wert zu berücksichtigen.Die Verarbeitung endet dann.If the current instruction contains a modR / M value, processing proceeds to the blocks 716 respectively. 724 in which the length of the instruction is decoded without taking into account a modR / M value. The processing then ends. [0117] Wiedie obige Besprechung zeigt, liefern hier beschriebene Ausführungsformender Vorrichtung und des Verfahrens einen effizienten Mechanismuszum Decodieren eines neuen Anweisungssatzes unter Verwendung vonDrei-Byte-Escape-Opcodes zusammen mit einem exisitierenden Präfix-Wert.Der neue Anweisungssatz stelle eine Vergrößerung in Bezug auf den existierendenAnweisungssatz dar, ohne den Anweisungsdecodierer unmäßig zu verkomplizieren.AsThe above discussion shows embodiments described hereinthe device and the method an efficient mechanismfor decoding a new instruction set usingThree-byte escape opcodes together with an existing prefix value.The new instruction set represents an enlargement in relation to the existing oneInstruction set without unduly complicating the instruction decoder. [0118] Dieobige Besprechung beschreibt die Definition einer Opcode-Map für einenProzessor mit einem Anweisungssatz variabler Länge, für den jede Anweisung in derOpcode-Map durch Verwendung von Festeingabe-Längenbestimmungslogik längendecodiertwerden kann. Die obige Beschreibung wurde im Hinblick auf ein einzigesVerfahren zur Bestimmung der Längevon Anweisungen in einer 3-Byte-Escape-Opcode-Map besprochen. Beieiner alternative Ausführungsformkann jedoch eine Ein-Byte-Escape-Opcode-Map definiert werden, sodaß eineeinzige Festeingabe-Längenbestimmungslogikzur Decodierung der Längefür jedeAnweisung in der Opcode-Map angewandt werden kann. Für solcheAnweisungen folgt ein anweisungsspezifischer Opcode einem Escape-Bytemit einem bestimmten Wert, wie zum Beispiel 0xD6 oder 0xF1. DieLänge jederAnweisung in einer solchen Ein-Byte-Escape-Opcode-Map kann unterVerwendung derselben Festeingabe-Längenbestimmungslogikdecodiert werden.TheThe above discussion describes the definition of an opcode map for oneProcessor with an instruction set of variable length, for which each instruction in theOpcode map has been long-decoded by using hard-entry length determination logiccan be. The above description has been made with regard to a singleMethod for determining the lengthof instructions in a 3-byte escape opcode map. atan alternative embodimenthowever, a one-byte escape opcode map can be defined sothat onesingle hard-entry length determination logicfor decoding the lengthfor everyInstruction can be applied in the opcode map. For suchInstructions are followed by an instruction-specific opcode an escape bytewith a specific value, such as 0xD6 or 0xF1. TheLength everyoneStatement in such a one-byte escape opcode map can be found belowUse the same hard-entry length determination logicbe decoded. [0119] Ähnlich kannbei einer alternativen Ausführungsformdie gesamte 2-Byte-Escape-Opcode-Mapoder ein Teil davon auch wie hier beschrieben definiert werden.Bei einer solchen Ausführungsformkann dieselbe Festeingabe-Längenbestimmungslogikzur Decodierung der Längejeder Anweisung in der neuen 2-Byte-Escape-Opcode-Map verwendetwerden. Zum Beispiel kann ein Block von Anweisungen innerhalb der Zwei-Byte-Escape-Opcode-Mapso definiert werden, daß eineeinzige Festeingabe-Längenbestimmungslogik zurBestimmung der Längejeder Anweisung in einer solchen Opcode-Map verwendet werden kann.Bei mindestens einer Ausführungsformwerden die neuen Escape-Code-Maps so definiert, daß ein anweisungsspezifischerOpcode einem Escape-Code folgt. Der Escape-Code kann zum Beispielbeliebiger oder alles der folgenden sein: 0x0F3C bis 0x0F3Y.Similarlyin an alternative embodimentthe entire 2-byte escape opcode mapor part of it, as defined here.In such an embodimentmay have the same hard-entry length determination logicfor decoding the lengthevery statement used in the new 2-byte escape opcode mapbecome. For example, a block of instructions may be inside the two-byte escape opcode mapbe defined so that asingle hard-entry length determination logic forDetermination of the lengthAny statement in such an opcode map can be used.In at least one embodimentThe new escape code maps are defined to be an instruction-specificOpcode follows an escape code. The escape code can be for exampleAny or all of the following: 0x0F3C to 0x0F3Y. [0120] Obwohlkonkrete Ausführungsformender vorliegenden Erfindung gezeigt und beschrieben wurden, ist für Fachleuteoffensichtlich, daß Änderungenund Modifikationen vorgenommen werden können, ohne von der vorliegendenErfindung in ihren allgemeineren Aspekten abzuweichen. Die angefügten Ansprüche sollenin ihrem Schutzumfang alle solchen Änderungen und Modifikationen,die in den wahren Schutzumfang der vorliegenden Erfindung fallen,abdecken.Even thoughconcrete embodimentsof the present invention have been described and described to those skilled in the artobviously, that changesand modifications can be made without departing from the presentDeviate from the invention in its more general aspects. The appended claims are intendedwithin its scope all such changes and modifications,fall within the true scope of the present invention,cover.
权利要求:
Claims (83) [1] Verfahren mit den folgenden Schritten: Bestimmen,ob ein Anweisungscode eines Anweisungssatzes variabler Länge einenEscape-Opcode-Wert enthält; wennder Anweisungcode den Escape-Opcode-Wert enthält, Bestimmen der Länge desAnweisungscodes, ausschließlichdes Auswertens eines anweisungsspezifischen Opcode-Werts in demAnweisungscode.A method comprising the steps of: determining whether an instruction code of a variable-length instruction set has an escape opcode value contains; if the instruction code contains the escape opcode value, determining the length of the instruction code, excluding evaluating an instruction-specific opcode value in the instruction code. [2] Verfahren nach Anspruch 1, weiterhin mit dem folgendenSchritt: Ausführeneiner Operation als Reaktion auf einen Wert in dem anweisungsspezifischenOpcode-Felds.The method of claim 1, further comprising the followingStep:To runan operation in response to a value in the instruction-specificOpcode field. [3] Verfahren nach Anspruch 1, weiterhin mit den folgendenSchritten: Bestimmen, ob der Anweisungscode einen Präfixcodeenthält;und wenn (der Anweisungscode den Präfixcode enthält und derAnweisungscode den Escape-Opcode enthält) Erzeugen, als Reaktionauf den Anweisungscode, eines ersten decodierten Anweisungscodes.The method of claim 1, further comprising the followingsteps:Determine if the instruction code is a prefix codecontains;andif (the statement code contains the prefix code and theStatement code containing the escape opcode) generating in responseto the instruction code, a first decoded instruction code. [4] Verfahren nach Anspruch 3, weiterhin mit dem folgendenSchritt: wenn (der Anweisungscode nicht den Präfixcodeenthältund der Anweisungscode den Escape-Opcode enthält), Erzeugen, als Reaktionauf den Anweisungscode, eines zweiten decodierten Anweisungscodes.The method of claim 3, further comprising the followingStep:if (the statement code is not the prefix codecontainsand the instruction code includes the escape opcode), generating, in responseto the instruction code, a second decoded instruction code. [5] Verfahren nach Anspruch 3, wobei der Präfixcode0x66 ist.The method of claim 3, wherein the prefix code0x66 is. [6] Verfahren nach Anspruch 1, wobei der Escape-Opcodeeiner von mehreren Escape-Opcode-Werten, diefür einenAnweisungssatz definierten, ist.The method of claim 1, wherein the escape opcodeone of several escape opcode values, thefor oneIs defined in instruction set. [7] Verfahren nach Anspruch 6, wobei die mehreren Escape-Opcode-Werte0x0F38, 0x0F39, 0x0F3A and 0x0FB umfassen.The method of claim 6, wherein the plurality of escape opcode values0x0F38, 0x0F39, 0x0F3A and 0x0FB. [8] Verfahren nach Anspruch 3, wobei der erste decodierteAnweisungscode mindestens ein Register erweiterter Länge angibt.The method of claim 3, wherein the first decodedStatement code specifies at least one extended-length register. [9] Verfahren nach Anspruch 4, wobei der zweite decodierteAnweisungscode mindestens ein Register regulärer Länge angibt.The method of claim 4, wherein the second decodedStatement code specifies at least one register of regular length. [10] Vorrichtung, umfassend: einen Escape-Detektorzur Bestimmung, ob ein Anweisungscode einen Escape-Opcode-Wert enthält; und einenAnweisungslängendecoderzur Bestimmung der Längedes Anweisungscodes; wobei, wenn der Anweisungscode den Escape-Opcode-Wertenthält,der Anweisungslängendecoderder Bestimmung der Längedes Anweisungscodes, ausschließlichdes Auswertens des anweisungsspezifischen Opcodes, dient.Apparatus comprising:an escape detectorto determine if an instruction code contains an escape opcode value; andoneInstruction length decoderfor determining the lengththe instruction code;where if the instruction code is the escape opcode valuecontainsthe statement length decoderthe determination of the lengthof the instruction code, exclusivelythe evaluation of the instruction-specific opcode. [11] Vorrichtung nach Anspruch 10, die weiterhin folgendesumfaßt: einenOpcode-Decoder, um als Reaktion auf den Inhalt des anwendungsspezifischenOpcode-Felds ein Steuersignal zu erzeugen, das eine Anweisung repräsentiert.The device of claim 10, further comprisingcomprising:oneOpcode decoder to respond to the content of the application-specificOpcode field to generate a control signal representing an instruction. [12] Vorrichtung nach Anspruch 10, die weiterhin folgendesumfaßt: einenPräfix-Detektorzur Bestimmung, ob der Anweisungscode einen Präfixcode enthält.The device of claim 10, further comprisingcomprising:onePREFIX DETECTORto determine if the instruction code contains a prefix code. [13] Vorrichtung nach Anspruch 12, die weiterhin folgendesumfaßt: einenOpcode-Decoder zum Erzeugen eines ersten decodierten Anweisungscodesals Reaktion auf den Inhalt des anweisungsspezifischen Opcode-Felds,wenn (der Anweisungscode den Präfixcodeenthältund der Anweisungscode den Escape-Opcode enthält).The device of claim 12, further comprisingcomprising:oneOpcode decoder for generating a first decoded instruction codein response to the content of the instruction-specific opcode field,if (the statement code has the prefix codecontainsand the instruction code contains the escape opcode). [14] Vorrichtung nach Anspruch 13, wobei: der Opcode-Decoderweiterhin einen zweiten decodierten Anweisungscode als Reaktionauf den Inhalt des anweisungsspezifischen Opcode-Felds übersetzt,wenn (der Anweisungscode den Präfixcodenicht enthältund der Anweisungscode den Escape-Opcode enthält).Apparatus according to claim 13, wherein:the opcode decodera second decoded instruction code in responsetranslated to the content of the instruction-specific opcode field,if (the statement code has the prefix codedoes not containand the instruction code contains the escape opcode). [15] Vorrichtung nach Anspruch 12, wobei der Präfixcode0x66 ist.The apparatus of claim 12, wherein the prefix code0x66 is. [16] Vorrichtung nach Anspruch 10, wobei der Escape-Opcodeeiner von mehreren füreinen Anweisungssatz Escape-Opcode-Werten ist.The device of claim 10, wherein the escape opcodeone of several foran instruction set is escape opcode values. [17] Vorrichtung nach Anspruch 16, wobei die mehrerenEscape-Opcode-Werte 0x0F38, 0x0F39, 0x0F3A und 0x0F3B umfassen.The apparatus of claim 16, wherein the plurality of escape opcode values are 0x0F38, 0x0F39, 0x0F3A and 0x0F3B. [18] Vorrichtung nach Anspruch 13, wobei der erste decodierteAnweisungscode mindestens ein Register erweiterter Länge angibt.The apparatus of claim 13, wherein the first decodedStatement code specifies at least one extended-length register. [19] Vorrichtung nach Anspruch 14, wobei der zweite decodierteAnweisungscode mindestens ein Register regulärer Länge angibt.The apparatus of claim 14, wherein the second decodedStatement code specifies at least one register of regular length. [20] System, umfassend: einen Speicher zum Speicherneines Anweisungscodes mit einem anweisungsspezifischen Opcode undeinem Escape-Code, wobei der Escape-Code einen mit einem zweitenByte-Wert zusammenhängendenersten Byte-Wert enthält,wobei der anweisungsspezifische Opcode in Bezug auf den Escape-Opcodezusammenhängendist; Abruflogik zum Abrufen des Anweisungscodes aus dem Speicher;und eine Decodiereinheit zum Erzeugen eines oder mehrerer Steuersignaleals Reaktion auf den abgerufenen Anweisungscode.System comprising:a memory for storingan instruction code with an instruction specific opcode andan escape code, with the escape code one with a secondByte value relatedcontains first byte value,wherein the instruction-specific opcode is related to the escape opcodecoherentlyis;Fetch logic for fetching the instruction code from the memory;anda decoding unit for generating one or more control signalsin response to the retrieved instruction code. [21] System nach Anspruch 20, wobei die Decodereinheitweiterhin Längenbestimmungslogikzum Empfangen eines festen Satzes von Eingaben enthält; wobeijede Eingabe in den festen Satz von Eingaben für die Bestimmung der Länge jedesder mehreren Anweisungscodes relevant ist; wobei jeder dermehreren Anweisungscodes den Escape-Code-Wert enthält.The system of claim 20, wherein the decoder unitfurthermore length determination logicfor receiving a fixed set of inputs;in whicheach input to the fixed set of inputs for determining the length of eachthe one of the several instruction codes is relevant;where each of themultiple instruction codes containing the escape code value. [22] System nach Anspruch 20, weiterhin umfassend: einenEscape-Detektor zur Bestimmung, ob der Escape-Code einer von mehrerenvorbestimmten Escape-Code-Werten ist.The system of claim 20, further comprising:oneEscape detector to determine if the escape code is one of severalis predetermined escape code values. [23] System nach Anspruch 22, wobei die mehreren vorbestimmtenEscape-Code-Werte 0x0F38, 0x0F39, 0x0F3A und 0x0F3B umfassen.The system of claim 22, wherein the plurality of predetermined onesEscape code values include 0x0F38, 0x0F39, 0x0F3A and 0x0F3B. [24] System nach Anspruch 20, weiterhin umfassend: einenPräfix-Detektorzur Bestimmung, ob der erste Anweisungscode einen Präfixwertenthält.The system of claim 20, further comprising:onePREFIX DETECTORfor determining if the first instruction code is a prefix valuecontains. [25] System nach Anspruch 21, wobei der erste Satz vonEingaben den Inhalt eines modR/M-Felds enthält.The system of claim 21, wherein the first set ofContains the contents of a modR / M field. [26] System nach Anspruch 21, wobei der feste Satzvon Eingaben mindestens einen Teil des Inhalts eines SIB-Felds enthält.The system of claim 21, whereinthe solid sentenceof inputs contains at least part of the contents of a SIB field. [27] System nach Anspruch 20, wobei die Decodereinheitweiterhin einen Längendecoderumfaßt,um die Längeder Anweisung auf der Basis einer Teilmenge des Anweisungscodeszu bestimmen, wobei die Teilmenge den anweisungsspezifischen Opcode ausschließt.The system of claim 20, whereinthe decoder unitcontinue a length decodercomprisesaround the lengththe instruction based on a subset of the instruction codeand the subset excludes the instruction-specific opcode. [28] System nach Anspruch 27, wobei die Teilmengedie ersten und zweiten Byte-Werte des Escape-Codes und einen Adressierungsformwertenthält.The system of claim 27, whereinthe subsetthe first and second byte values of the escape code and an addressing form valuecontains. [29] System nach Anspruch 28, wobei die Teilmengeweiterhin einen Teil des Inhalts eines optionalen Basisfelds enthält.The system of claim 28, whereinthe subsetcontinues to contain part of the content of an optional base field. [30] System nach Anspruch 20, wobei die Decodereinheitweiterhin einen Opcode-Decoder umfaßt, um als Reaktion auf denanweisungsspezifischen Opcode das eine oder die mehreren Steuersignalezu erzeugen, wobei der Inhalt des anweisungsspezifischen Opcodeseine Operation spezifiziert.The system of claim 20, whereinthe decoder unitfurther comprising an opcode decoder for responding toinstruction-specific opcode the one or more control signalsthe content of the instruction-specific opcodean operation specified. [31] System nach Anspruch 20, weiterhin umfassend: Ausführungslogikzur Durchführungeiner Operation als Reaktion auf die Steuersignale.The system of claim 20, further comprising:execution logicto carry outan operation in response to the control signals. [32] System nach Anspruch 20, wobei der Anweisungscodeweiterhin einen Präfixwertenthält.The system of claim 20, whereinthe instruction codestill a prefix valuecontains. [33] Verfahren mit den folgenden Schritten: Abrufeneines Anweisungscodes eines Anweisungsformats variabler Länge ausden Speicher, wobei das Anweisungsformat ein Escape-Feld mit mehrerenByte-Elementen, darunter ein erstes Byte-Element und ein zweitesByte-Element, enthält,wobei das Anweisungsformat weiterhin ein Adressierungsformfeld undein anweisungsspezifisches Opcode-Feld zwischen dem Escape-Feldund dem Adressierungsformfeld enthält; und Einleiten einerOperation als Reaktion auf einen Wert in dem anweisungsspezifischenOpcode.Procedure with the following steps:Recallan instruction code of a variable-length instruction formatthe memory, where the instruction format is an escape field with multipleByte elements, including a first byte element and a second oneByte element, containswherein the instruction format further comprises an addressing form field andan instruction-specific opcode field between the escape fieldand the addressing form field; andInitiate aOperation in response to a value in the instruction-specificOpcode. [34] Verfahren nach Anspruch 33, wobei das Einleiteneiner Operation weiterhin das Erzeugen eines Steuersignals auf dermindestens teilweisen Basis des Werts des anweisungsspezifischenOpcodes umfaßt.The method of claim 33, whereinthe initiationan operation further generating a control signal on theat least partial basis of the value of the instruction-specificOpcodes includes. [35] Verfahren nach Anspruch 33, wobei das Einleiteneiner Operation weiterhin das Einleiten einer Operation an gepacktenDaten umfaßt.The method of claim 33, whereinthe initiationan operation continues to initiate an operation on packedData includes. [36] Verfahren nach Anspruch 33, wobei weiterhin: dasBestimmen der Längedes Anweisungscodes weiterhin umfaßt, die Längenbestimmung völlig aufden Inhalt des Escape-Felds, des Adressierungformfelds und einesPräfixfeldesin dem Anweisungscode zu basieren.The method of claim 33, further comprising:theDetermine the lengthof the instruction code further includes the length determination completelythe contents of the escape field, the addressing form field, and aPräfixfeldesin the instruction code. [37] Verfahren nach Anspruch 33, weithin mit dem folgendenSchritt: Bestimmen der Längedes Anweisungcodes, wobei die Längenbestimmungvölligauf den Inhalt des Escape-Felds und des Adressierungsformfelds basiert.The method of claim 33, broadly using the followingStep:Determine the lengthof the instruction code, wherein the length determinationcompletelybased on the contents of the escape field and the addressing form field. [38] Verfahren nach Anspruch 33, weiterhin mit dem folgendenSchritt: Bestimmen der Längedes Anweisungscodes, wobei die Längenbestimmungvölligauf den Inhalt des Escape-Felds, des Adressierungsformfelds undeines Teils des Inhalts des optionalen Basisfelds basiert; wobeidas Anweisungsformat weiterhin das optionale Basisfeld enthält.The method of claim 33, further comprising the followingStep:Determine the lengthof the instruction code, wherein the length determinationcompletelyon the contents of the escape field, the addressing form field, anda portion of the content of the optional base field is based;in whichthe statement format still contains the optional base field. [39] Vorrichtung, umfassend: Einen Decoder zum Erzeugeneines Steuersignals als Reaktion auf einen Anweisungscode einesAnweisungsformats variabler Länge,wobei der Anweisungscode ein Escape-Feld mit mehreren Byte-Elementen,darunter mindestens ein erstes und ein zweites Byte-Element; einAdressierungsformfeld und ein anweisungsspezifisches Opcode-Feldzwischen dem Escape-Feld und dem Adressierungsmodusfeld umfaßt; und eineAusführungseinheitzur Durchführungeiner Operation als Reaktion auf das Steuersignal.Apparatus comprising:A decoder for generatinga control signal in response to an instruction code of aInstruction format of variable length,wherein the instruction code is an escape field with multiple byte elements,including at least a first and a second byte element; oneAddressing form field and an instruction-specific opcode fieldbetween the escape field and the addressing mode field; andaexecution unitto carry outan operation in response to the control signal. [40] Vorrichtung nach Anspruch 39, wobei der Inhaltdes Escape-Felds eine Begrenzung bezüglich der Länge des Anweisungscodes angibt.Apparatus according to claim 39, whereinthe contentof the escape field indicates a limit on the length of the instruction code. [41] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheitfür einshuffle-gepackter Byte ausgelegt ist, wenn der Inhalt des Escape-Feldsder hexadezimale Wert „0F38" ist; und der Inhaltdes anweisungsspezifischen Opcode-Felds der hexadezimale Wert „00" ist.Apparatus according to claim 39, whereinthe execution unitfor ashuffle-packed byte is designed whenthe contents of the escape fieldthe hexadecimal value is "0F38" and the contentof the instruction-specific opcode field is the hexadecimal value "00". [42] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheiteine Addition horizontal gepackter Wort-Längen-Zahlen reagierend durchführen soll, wenn derInhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhalt des anweisungsspezifischenOpcode-Felds der hexadezimale Wert „01" ist.Apparatus according to claim 39, whereinthe execution unitshould perform an addition of horizontally packed word length numbers responsive whenof theContent of the escape field is the hexadecimal value "0F38"; and the content of the instruction-specificOpcode field is the hexadecimal value "01". [43] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheiteine Addition horizontal gepackter Doppelwort-Längen-Zahlen durchführen soll,wenn der Inhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhaltdes anweisungsspezifischen Opcode-Felds der hexadezimale Wert „02" ist.Apparatus according to claim 39, whereinthe execution unitshould perform an addition of horizontally packed double word length numbers,ifthe contents of the escape field is the hexadecimal value "0F38"; and the contentof the instruction-specific opcode field is the hexadecimal value "02". [44] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheiteine Addition horizontal gepackter Zahlen mit Sättigung durchführen soll,wenn der Inhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhaltdes anweisungsspezifischen Opcode-Felds der hexadezimale Wert „03" ist.Apparatus according to claim 39, whereinthe execution unitshould perform an addition of horizontally packed numbers with saturation,ifthe contents of the escape field is the hexadecimal value "0F38"; and the contentof the instruction-specific opcode field is the hexadecimal value "03". [45] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheitferner ein Multiplizieren und Addieren gepackter vorzeichenbehafteterund vorzeichenloser Zahlen vornehmen soll, wenn der Inhaltdes Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhalt des anweisungsspezifischenOpcode-Felds der hexadezimale Wert „04" ist.Apparatus according to claim 39, wherein the execution unit is further to multiply and add packed signed and unsigned numbers if the content of the escape field is the hexadecimal value "0F38"; and the content of the instruction specific opcode field is the hexadecimal value "04". [46] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheiteine Subtraktion horizontal gepackter vorzeichenbehafteter Wörter durchführen soll, wenn derInhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhalt des anweisungsspezifischenOpcode-Felds der hexadezimale Wert „05" ist.Apparatus according to claim 39, whereinthe execution unitshould perform a subtraction of horizontally packed signed words whenof theContent of the escape field is the hexadecimal value "0F38"; and the content of the instruction-specificOpcode field is the hexadecimal value "05". [47] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheiteine Subtraktion horizontal gepackter vorzeichenbehafteter Doppelwörter vornehmen soll,wenn der Inhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhaltdes anweisungsspezifischen Opcode-Felds der hexadezimale Wert „06" ist.Apparatus according to claim 39, whereinthe execution unitshould perform a subtraction of horizontally packed signed double words,ifthe contents of the escape field is the hexadecimal value "0F38"; and the contentof the instruction-specific opcode field is the hexadecimal value "06". [48] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheiteine Subtraktion horizontal gepackter vorzeichenbehafteter Wörter durchführen soll, wenn derInhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhalt des anweisungsspezifischenOpcode-Felds der hexadezimale Wert „07" ist.Apparatus according to claim 39, whereinthe execution unitshould perform a subtraction of horizontally packed signed words whenof theContent of the escape field is the hexadecimal value "0F38"; and the content of the instruction-specificOpcode field is the hexadecimal value "07". [49] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheitdas Vorzeichen gepackter vorzeichenbehafteter Byte bestimmen soll,wenn der Inhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhaltdes anweisungsspezifischen Opcode-Felds der hexadezimale Wert „08" ist.Apparatus according to claim 39, whereinthe execution unitdetermine the sign of packed signed bytes,ifthe contents of the escape field is the hexadecimal value "0F38"; and the contentof the instruction-specific opcode field is the hexadecimal value "08". [50] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheitdas Vorzeichen gepackter vorzeichenbehafteter Wörter bestimmen soll, wenn derInhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhalt des anweisungsspezifischenOpcode-Felds der hexadezimale Wert „09" ist.Apparatus according to claim 39, whereinthe execution unitdetermine the sign of packed signed words whenof theContent of the escape field is the hexadecimal value "0F38"; and the content of the instruction-specificOpcode field is the hexadecimal value "09". [51] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheitdas Vorzeichen gepackter vorzeichenbehafteter Doppelwörter bestimmensoll, wenn der Inhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhaltdes anweisungsspezifischen Opcode-Felds der hexadezimale Wert „0A" ist.Apparatus according to claim 39, whereinthe execution unitdetermine the sign of packed signed double wordsshould, ifthe contents of the escape field is the hexadecimal value "0F38"; and the contentof the instruction-specific opcode field is the hexadecimal value "0A". [52] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheitein gepacktes Multiplizier-High mit Rundung und Skalierung durchführen soll,wenn der Inhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhaltdes anweisungsspezifischen Opcode-Felds der hexadezimale Wert „0B" ist.Apparatus according to claim 39, whereinthe execution unitto perform a packed multiply-high with rounding and scaling,ifthe contents of the escape field is the hexadecimal value "0F38"; and the contentof the instruction-specific opcode field is the hexadecimal value "0B". [53] Vorrichtung aus Anspruch 39, wobei die Ausführungseinheitden Absolutwert füreinen gepackten Byte-Operanden bestimmen soll, wenn der Inhaltdes Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhalt des anweisungsspezifischenOpcode-Felds der hexadezimale Wert „1 C" ist.The device of claim 39, whereinthe execution unitthe absolute value forshould determine a packed byte operand ifthe contentof the escape field is the hexadecimal value "0F38"; and the content of the instruction-specificOpcode field is the hexadecimal value "1 C". [54] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheitden Absolutwert füreinen gepackten Wortoperanden bestimmen soll, wenn der Inhaltdes Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhalt des anweisungsspezifischenOpcode-Felds der hexadezimale Wert „1D" ist.Apparatus according to claim 39, whereinthe execution unitthe absolute value forshould determine a packed word operand ifthe contentof the escape field is the hexadecimal value "0F38"; and the content of the instruction-specificOpcode field is the hexadecimal value "1D". [55] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheitden Absolutwert füreinen gepackten Doppelwort-Operanden bestimmen soll, wenn derInhalt des Escape-Felds der hexadezimale Wert „0F38" ist; und der Inhalt des anweisungsspezifischenOpcode-Felds der hexadezimale Wert „1E" ist.Apparatus according to claim 39, whereinthe execution unitthe absolute value forshould determine a packed double-word operand, ifof theContent of the escape field is the hexadecimal value "0F38"; and the content of the instruction-specificOpcode field is the hexadecimal value "1E". [56] Vorrichtung nach Anspruch 39, wobei die Ausführungseinheiteinen gepackten Operanden nach rechts schieben und zusammenführen soll,wenn der Inhalt des Escape-Felds der hexadezimale Wert „0F3A" ist; und der Inhaltdes anweisungsspezifischen Opcode-Felds der hexadezimale Wert „0F" ist.The apparatus of claim 39, wherein the execution unit is to shift and merge a packed operand to the right when the content of the escape field is the hexadecimal value "0F3A", and the content of the instruction-specific opcode field is the hexadecimal value "0F". [57] MaschinenzugänglichesMedium, das einen Prozessorentwurf speichert, wobei der Prozessorfolgendes umfaßt: Abruflogikzum Abrufen eines Anweisungscodes eines Anweisungssatzes variablerLänge,wobei der Anweisungscode einen Mehr-Byte-Excape-Code-Wert nebeneinem anweisungsspezifischen Opcode-Wert enthält; und eine Decodiereinheitzum Erzeugen eines oder mehrerer Steuersignale als Reaktion aufden abgerufenen Anweisungscode.machine AccessibleMedium storing a processor design, wherein the processorcomprising:fetch logicfor retrieving an instruction code of a variable instruction setLength,where the instruction code is a multi-byte escape code value in additioncontains an instruction-specific opcode value; anda decoding unitfor generating one or more control signals in response tothe retrieved instruction code. [58] MaschinenzugänglichesMedium nach Anspruch 57, wobei der Prozessor weiterhin folgendesumfaßt: einenLängendecoderzur Bestimmung der Längedes Anweisungscodes vollständigauf der Basis einer Auswertung einer Teilmenge der Bit in dem Anweisungscode,wobei die Teilmenge von Bit den anweisungsspezifischen Opcode-Wertausschließt.machine AccessibleThe medium of claim 57, wherein the processor further comprisescomprising:onelength decoderfor determining the lengthof the instruction code completelybased on an evaluation of a subset of the bits in the instruction code,where the subset of bits is the instruction-specific opcode valueexcludes. [59] MaschinenzugänglichesMedium nach Anspruch 57, wobei der Prozessor weiterhin folgendesumfaßt: Ausführungslogikzur Durchführungeiner Operation als Reaktion auf die Steuersignale.machine AccessibleThe medium of claim 57, wherein the processor further comprisescomprising:execution logicto carry outan operation in response to the control signals. [60] MaschinenzugänglichesMedium nach Anspruch 59, wobei die Ausführungslogik weiterhin die Operationan gepackten Daten durchführensollmachine AccessibleThe medium of claim 59, whereinthe execution logic continues the operationon packed datashould [61] MaschinenzugänglichesMedium nach Anspruch 57, wobei die Decodiereinheit weiterhinein erstes Steuersignal erzeugen soll, wenn ein Präfixfelddes Anweisungscodes einen vorbestimmten Wert hält.machine AccessibleThe medium of claim 57, whereinthe decoding unit continuesto generate a first control signal when a prefix fieldof the instruction code holds a predetermined value. [62] MaschinenzugänglichesMedium nach Anspruch 61, wobei der vorbestimmte Wert 0x66 ist.machine AccessibleThe medium of claim 61, whereinthe predetermined value is 0x66. [63] MaschinenzugänglichesMedium nach Anspruch 61, wobei die Decodiereinheit weiterhinein zweites Steuersignal erzeugen soll, wenn das Präfixfeldnicht den vorbestimmten Wert hält.machine AccessibleThe medium of claim 61, whereinthe decoding unit continuesto generate a second control signal when the prefix fielddoes not hold the predetermined value. [64] Vorrichtung, umfassend: ein Mittel zum Abrufeneines Anweisungscodes eines Anweisungsformats variabler Länge ausdem Speicher, wobei das Anweisungsformat ein Escape-Feld mit mehrerenByte-Elementen, darunter ein erstes Byte-Element und ein zweitesByte-Element, enthält,wobei das Anweisungsformat weiterhin ein Adressierungsformfeld undein anweisungsspezifisches Opcode-Feld zwischen dem Escape-Feldund dem Adressierungsformfeld enthält; und ein Mittel zumEinleiten einer Operation als Reaktion auf einen Wert in dem anweisungsspezifischenOpcode.Apparatus comprising:a means of retrievalan instruction code of a variable-length instruction formatthe memory, where the instruction format is an escape field with multipleByte elements, including a first byte element and a second oneByte element, containswherein the instruction format further comprises an addressing form field andan instruction-specific opcode field between the escape fieldand the addressing form field; anda means toInitiating an operation in response to a value in the instruction-specific oneOpcode. [65] Vorrichtung nach Anspruch 64, wobei das Mittelzum Einleiten einer Operation weiterhin ein Mittel zum Erzeugeneines Steuersignals auf dem mindestens teilweisen Basis des Wertsdes anweisungsspezifischen Opcodes umfaßt.Apparatus according to claim 64, whereinthe middleto initiate an operation further means for generatinga control signal on the at least partial basis of the valueof the instruction-specific opcode. [66] Vorrichtung nach Anspruch 64, wobei das Mittelzum Einleiten einer Operation weiterhin ein Mittel zum Einleiteneiner Operation an gepackten Daten umfaßt.Apparatus according to claim 64, whereinthe middleto initiate an operation further means for initiatingan operation on packed data. [67] Vorrichtung nach Anspruch 64, wobei das Mittelzum Einleiten einer Operation weiterhin ein Mittel zum Einleiteneiner Additionsoperation an gepackten Daten umfaßt.Apparatus according to claim 64, whereinthe middleto initiate an operation further means for initiatingan addition operation on packed data. [68] Vorrichtung nach Anspruch 64, wobei das Mittelzum Einleiten einer Operation weiterhin ein Mittel zum Einleiteneiner Subtraktionsoperation an gepackten Daten umfaßt.Apparatus according to claim 64, whereinthe middleto initiate an operation further means for initiatinga subtraction operation on packed data. [69] Vorrichtung nach Anspruch 64, wobei das Mittelzum Einleiten einer Operation weiterhin ein Mittel zum Einleiteneiner Shuffle-Operation an gepackten Daten umfaßt.Apparatus according to claim 64, whereinthe middleto initiate an operation further means for initiatinga shuffle operation on packed data. [70] Vorrichtung nach Anspruch 64, wobei das Mittelzum Einleiten einer Operation weiterhin ein Mittel zum Einleiteneiner Multiplizieroperation an gepackten Daten umfaßt.Apparatus according to claim 64, whereinthe middleto initiate an operation further means for initiatinga multiply operation on packed data. [71] Vorrichtung nach Anspruch 64, wobei das Mittelzum Einleiten einer Operation weiterhin ein Mittel zum Einleiteneiner Schiebeoperation an gepackten Daten umfaßt.Apparatus according to claim 64, whereinthe middleto initiate an operation further means for initiatinga shift operation on packed data. [72] Vorrichtung nach Anspruch 64, wobei das Mittelzum Einleiten einer Operation weiterhin ein Mittel zum Einleiteneiner Absolutwertoperation an gepackten Daten umfaßt.Apparatus according to claim 64, whereinthe middleto initiate an operation further means for initiatingan absolute value operation on packed data. [73] Vorrichtung nach Anspruch 64, wobei das Mittelzum Einleiten einer Operation weiterhin ein Mittel zum Einleiteneiner Vorzeichenbestimmungsoperation an gepackten Daten umfaßt.Apparatus according to claim 64, whereinthe middleto initiate an operation further means for initiatinga sign determination operation on packed data. [74] Vorrichtung nach Anspruch 64, wobei ein Mittelzur Bestimmung der Längedes Anweisungscodes, wobei die Längenbestimmungvölligauf den Inhalt des Escape-Felds, des Adressierungsformfelds undeines optionalen Präfixfeldsbasiert; wobei der Anweisungscode weiterhin wahlweise das Präfixfeldenthält.Apparatus according to claim 64, whereina meansfor determining the lengthof the instruction code, wherein the length determinationcompletelyon the contents of the escape field, the addressing form field, andan optional prefix fieldbased;the instruction code optionally further including the prefix fieldcontains. [75] Vorrichtung nach Anspruch 64, weiterhin umfaßend: einMittel zur Bestimmung der Längedes Anweisungscodes, wobei die Längenbestimmungvölligauf den Inhalt des Escape-Felds, des Adressierungsformfelds basiert;The device of claim 64, further comprising:oneMeans for determining the lengthof the instruction code, wherein the length determinationcompletelybased on the content of the escape field, the addressing form field; [76] Vorrichtung nach Anspruch 64, weiterhin umfaßend: einMittel zur Bestimmung der Längedes Anweisungscodes, wobei die Längenbestimmungvölligauf den Inhalt des Escape-Felds, des Adressierungsformfelds undeines Teils des Inhalts des optionalen Basisfelds basiert; wobeider Anweisungscode weiterhin wahlweise das Basisfeld enthält.The device of claim 64, further comprising:oneMeans for determining the lengthof the instruction code, wherein the length determinationcompletelyon the contents of the escape field, the addressing form field, anda portion of the content of the optional base field is based;in whichthe instruction code further optionally contains the base field. [77] Verfahren mit den folgenden Schritten: Erzeugeneines Anweisungscodes, um einen Escape-Code-Wert und einen anweisungsspezifischenOpcode-Wert aufzunehmen; wobei der Escape-Code-Wert mindestenszwei Byte lang ist und eine erweiterte Opcode-Map identifiziert; wobeider Anweisungscode eine durch eine Ausführungseinheit als Reaktionauf den Anweisungscode durchzuführendeOperation repräsentiert.Procedure with the following steps:Producean instruction code to an escape code value and an instruction-specificTo record opcode value;where the escape code value is at leastis two bytes long and identifies an extended opcode map;in whichthe instruction code is a response by an execution unitto be performed on the instruction codeOperation represents. [78] Verfahren nach Anspruch 77, wobei das Erzeugeneines Anweisungscodes weiterhin das Erzeugen eines Anweisungscodes,der weiterhin einen Präfixwertenthält,umfaßt.The method of claim 77, whereinthe generatingan instruction code, further generating an instruction code,which still has a prefix valuecontainsincludes. [79] Verfahren nach Anspruch 78, wobei der Anweisungscodeeine zweite Operation repräsentiert.The method of claim 78, whereinthe instruction coderepresents a second operation. [80] Verfahren nach Anspruch 77, wobei das Erzeugeneines Anweisungscodes bei einem Anweisungssatz variabler Länge weiterhindas Auswählen desEscape-Code-Werts aus einem vordefinierten Satz von Escape-Code-Wertenumfaßt.The method of claim 77, whereinthe generatingan instruction code at a variable length instruction setselecting theEscape code value from a predefined set of escape code valuesincludes. [81] Verfahren nach Anspruch 80, wobei der vordefinierteSatz von Escape-Code-Werten 0x0F38, 0x0F39, 0x0F3A und 0x0F3B umfaßt.The method of claim 80, whereinthe predefined oneSet of escape code values 0x0F38, 0x0F39, 0x0F3A and 0x0F3B. [82] Verfahren nach Anspruch 80, wobei jeder dervordefinierten Escape-Code-Werte einen spezifischen Satz von Anweisungenangibt.The method of claim 80, whereineveryone whopredefined escape code values a specific set of statementsindicates. [83] Verfahren nach Anspruch 78, wobei der Präfixwert0x66 ist.The method of claim 78, whereinthe prefix value0x66 is.
类似技术:
公开号 | 公开日 | 专利标题 EP2857984B1|2019-02-13|Verfahren zur verarbeitung einer mehrere sprachen unterstützenden webseite, webseitenladeverfahren und system dafür DE112005003852B4|2016-05-04|Method and apparatus for vectoring multiple input commands DE102018006791A1|2019-04-04|Processors, methods and systems having a configurable spatial accelerator with a sequencer data flow operator DE60010907T2|2005-07-21|SRAM CONTROL DEVICE FOR PARALLEL PROCESSOR ARCHITECTURE WITH ADDRESS AND COMMAND QUEUE AND ARBITER DE10297000B4|2008-06-05|Method and apparatus for parallel data shifting to the right with data merging DE60126564T2|2007-10-31|Method and arrangement for speech synthesis DE4040963C2|1998-01-22|Data processing system DE60036016T2|2008-05-08|FAST MULTITHREADING FOR ENG COUPLED MULTIPROCESSORS DE69734545T2|2006-07-20|Method and device for improving the portability of an object-oriented interface between different environments DE60029732T2|2006-11-30|Phrase translation method and system DE19983860B4|2007-12-06|A method and apparatus for improved predicate prediction DE69725652T2|2004-07-29|Embedding sound in websites DE602004003439T2|2007-03-29|Noise reduction for robust speech recognition DE69637125T2|2008-01-24|OPTIMAL ACCESS TO ELECTRONIC DOCUMENTS DE19983476B4|2006-12-14|Method and circuitry for scheduling operations using a dependency matrix DE60213760T2|2007-08-09|METHOD FOR THE COMPRESSION AND DECOMPRESSION OF A STRUCTURED DOCUMENT DE19781850B4|2007-09-20|A microprocessor for speculatively executing instructions from a plurality of instruction streams, methods, and computer system with microprocessor indicated by a branch instruction EP1593057B1|2011-09-28|Browser-programm zur durchführung eines tabellen-layout KR100459301B1|2004-12-03|사용자 인터페이스 및 그 구성 방법 EP0829817B1|2003-07-02|Herunterladen eines Interpreters in einen Drucker CN100449479C|2009-01-07|使用3字节转义操作码的指令集扩展 DE69738101T2|2008-01-03|Management of access to objects using three-state references DE602005003987T2|2008-12-11|Method of programming a system on chip DMA control, as well as a system on chip for it. US20050261891A1|2005-11-24|System and method for text segmentation and display US20040193465A1|2004-09-30|Automated workflow assignment to print jobs
同族专利:
公开号 | 公开日 TWI326841B|2010-07-01| RU2004119906A|2006-01-10| CN100449479C|2009-01-07| CN1940859A|2007-04-04| KR100578439B1|2006-05-11| CN1940859B|2010-05-12| US20080148019A1|2008-06-19| JP3898712B2|2007-03-28| US7917734B2|2011-03-29| KR20050002666A|2005-01-10| CN1624653A|2005-06-08| NL1026490C2|2007-10-16| US8793470B2|2014-07-29| JP2005025741A|2005-01-27| US20120173852A1|2012-07-05| RU2288502C2|2006-11-27| US20040268090A1|2004-12-30| US7966476B2|2011-06-21| US8402252B2|2013-03-19| US8161269B2|2012-04-17| NL1026490A1|2005-01-03| US20110173418A1|2011-07-14| US20130219152A1|2013-08-22| TW200513971A|2005-04-16|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2005-01-27| OP8| Request for examination as to paragraph 44 patent law| 2013-10-28| R011| All appeals rejected, refused or otherwise settled| 2014-03-27| R119| Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee|Effective date: 20140101 | 2014-05-08| R130| Divisional application to|Ref document number: 102004064281 Country of ref document: DE Effective date: 20131025 | 2014-05-15| R003| Refusal decision now final|Effective date: 20131028 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|